猿问

如何使用接口填充切片?

我知道我可以用带有 的字符串填充 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{}?


界面


慕妹3146593
浏览 147回答 2
2回答

米琪卡哇伊

正如错误所说,您在复合文字中缺少类型:data := []interface{}{Users{ID: "123"}, Users{ID: "456"}}应该可以工作,因为它没有丢失复合文字中的类型。

杨魅力

[]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}
随时随地看视频慕课网APP

相关分类

Go
我要回答