我知道我可以用帶有 的字符串填充 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 關注
- 130 瀏覽
添加回答
舉報
0/150
提交
取消