Go条件指针值

Go conditional pointer value

我在程序中有几个结构。我有一个指针应该有条件地指向这些结构之一。这是一个简短的非功能示例:

type Struct1 struct {
    name string
}
type Struct2 struct {
    name string
}

func main() {
    var outputDevice
    switch inputValue {
        case "one":
            outputDevice = &Struct1{name: "name"}
        case "two":
            outputDevice = &struct2{name: "name"}
    }
}

注意,这两个结构有一个共同的接口:

type Output interface {
    Print() error
}

关于如何解决这个问题的任何想法。

这正是接口的用途。

如果您的两种类型已经共享一个公共接口,那么将您的变量设为接口类型:

var outputDevice Output