gpt4 book ai didi

go - append 到实现的基本接口(interface) slice 的 slice

转载 作者:数据小太阳 更新时间:2023-10-29 03:36:15 26 4
gpt4 key购买 nike

为什么以下不起作用?

locations := make([]*LocationEvent, 0)
data := make([]Event, 0)
data = append(data, locations...)

其中 *LocationEvent(结构)实现了 Event(接口(interface))。

虽然以下工作正常:

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

关于go - append 到实现的基本接口(interface) slice 的 slice ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56434319/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com