假设我有一个UnnamedTypes结构:
type UnnamedTypes struct {
i []int
f []float64
}
结构中的一些命名类型:
type I []int
type F []float64
type NamedTypes struct {
i I
f F
}
将NamedTypes结构分配给UnnamedTypes结构的最简单方法是什么?
func main() {
var u UnnamedTypes
var n NamedTypes
u.i = []int{1,2}
u.f = []float64{2,3}
n.i = []int{2,3}
n.f = []float64{4,5}
u = UnnamedTypes(n)
}
以cannot convert n (type NamedTypes) to type UnnamedTypes
答案 0 :(得分:3)
使用旧的结构值创建一个新的结构值。
u = UnnamedTypes{
i: n.i,
f: n.f,
}
虽然警告,因为这些特定值是切片,两个不同结构中的切片是完全相同的切片。修改一个将修改另一个。这同样适用于任何指针(包括地图和接口)。如果您希望他们拥有自己的副本,则必须分配副本。