我正在尝试将一个结构片段分配给片[]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
而不是一次一个地复制每个元素吗?
答案 0 :(得分:6)
你将不得不一次复制一次。没有办法解决它。
如果它有助于接受这个,你应该考虑这样一个事实,即在一个接口中包装一个结构实际上确实将它包装在内存级别。接口包含指向原始类型的指针和类型本身的描述符。将单个结构体转换为接口时,您实际上是在包装它。因此,为了将结构包装在界面中,有必要一次一个地复制它们。