我知道我可以用带有 的字符串填充 Go 切片strings := []string{"something", "something else"},但是除了接口之外,我怎么能做同样的事情呢?我尝试了以下方法:data := []interface{}{{ID: "123"}, {ID: "456"}}并得到以下错误:missing type in composite literal我也尝试过使用这样的结构:type Users struct { ID string}[]Users{{ID: "123"}, {ID: "456"}}哪个有效,但是mongo的InsertMany函数需要一个[]interface{}参数:cannot use users (type []Users) as type []interface {} in argument to database.InsertMany如何定义和填充一个[]interface{}?去界面片
2 回答
米琪卡哇伊
TA贡献1998条经验 获得超6个赞
正如错误所说,您在复合文字中缺少类型:
data := []interface{}{Users{ID: "123"}, Users{ID: "456"}}应该可以工作,因为它没有丢失复合文字中的类型。
杨魅力
TA贡献1811条经验 获得超6个赞
[]interface{}并且[]Users在 Go 中是不同的类型。
https://github.com/golang/go/wiki/InterfaceSlice
因此,您可以像 Adrian 的回答那样初始化切片,也可以像这样从用户切片创建界面切片
users := []Users{{ID: "123"}, {ID: "456"}}
usersInterfaces := make([]interface{}, len(users))
for i, u := range users {
usersInterfaces[i] = u
}
- 2 回答
- 0 关注
- 146 浏览
添加回答
举报
0/150
提交
取消
