猿问

将结构片转换为空接口片

我正在尝试将一个切片结构分配给一个切片[]interface{}(以传递给AppEngine datastore.PutMulti。但是,由于这两种类型显然不兼容,这会导致编译错误:

cannot use type[]*MyStruct as type []interface { } in assignment


基本上我有:


var src []*MyStruct

var dest []interface{}

dest = src  // This line fails.

反正是有复制src到dest不复制一个-AT-A-时间每个元素?


明月笑刀无情
浏览 232回答 1
1回答

三国纷争

您将不得不一次复制一次。没有办法解决。如果有助于接受这一点,则应考虑以下事实:将结构包装在接口中实际上确实将其包装在内存级别。接口包含指向原始类型的指针和类型本身的描述符。将单个结构投射到接口时,您实际上是在包装它。因此,必须一次复制一次,以便将结构包装在接口中。
随时随地看视频慕课网APP

相关分类

Go
我要回答