为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用接口填充切片?

如何使用接口填充切片?

Go
慕妹3146593 2022-06-21 16:54:30
我知道我可以用带有 的字符串填充 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"}}

应该可以工作,因为它没有丢失复合文字中的类型。


查看完整回答
反对 回复 2022-06-21
?
杨魅力

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

}


查看完整回答
反对 回复 2022-06-21
  • 2 回答
  • 0 关注
  • 146 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号