为什么下面的方法不起作用?
locations := make([]*LocationEvent, 0)
data := make([]Event, 0)
data = append(data, locations...)
其中
*LocationEvent
(结构)实现Event
(接口)。虽然以下工作正常:
data = append(data, &LocationEvent{}, &LocationEvent{})
那么,当使用
[]*LocationEvent
扩展实际的...
slice 时,它有何不同? 最佳答案
slice 类型必须与append
函数中的可变参数的类型完全匹配。 locations
属于[]*LocationEvent
类型,因此与[]Event
不兼容。使用 slice 时,Go中没有自动的“向下转换”。
您必须将位置复制到新的Event
slice 中,或将locations
的各项一一添加到data
slice 中。
有关更多说明,请参见此处:https://stackoverflow.com/a/12754757/6655315