如何解决如何用接口填充切片?
我知道我可以用strings := []string{"something","something else"}
用字符串填充Go切片,但是除了接口之外,我该怎么做?我尝试了以下方法:
data := []interface{}{{ID: "123"},{ID: "456"}}
并出现以下错误:
missing type in composite literal
我也曾尝试使用如下结构:
type Users struct {
ID string
}
[]Users{{ID: "123"},{ID: "456"}}
可以使用,但是mongo
的{{3}}函数需要一个[]interface{}
参数:
cannot use users (type []Users) as type []interface {} in argument to database.InsertMany
如何定义和填充[]interface{}
?
解决方法
如错误所示,您在复合文字中缺少类型:
data := []interface{}{Users{ID: "123"},Users{ID: "456"}}
应该起作用,因为它不会缺少复合文字中的类型。
, []interface{}
和[]Users
在Go语言中是不同的类型。
https://github.com/golang/go/wiki/InterfaceSlice
因此,您可以像Adrian的回答中那样初始化切片,也可以像这样从Users切片创建接口切片
users := []Users{{ID: "123"},{ID: "456"}}
usersInterfaces := make([]interface{},len(users))
for i,u := range users {
usersInterfaces[i] = u
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。