你好,我是 golang 的初學者,我正在開發購物車應用程序,每次我嘗試執行代碼時,它都會顯示“要附加的第一個參數必須是切片”,這里是代碼包 carttype Cart struct { items map[string]Item}type Item struct { id string name string price float32 quantity int}func NewItem(i string, n string, p float32) Item { return Item{ id: i, name: n, price: p, quantity: 0, }}func NewCart() Cart { return Cart{ items: map[string]Item{}}}func (box *Cart) AddItem(item Item) []Item { box.items = append(box.items, item) return box.items}func main() { utils.CreateLogger("shopping-cart") shoppingCart := cart.NewCart() item1 := cart.NewItem("potato121", "Potato", 10) err := shoppingCart.AddItem(item1)}
1 回答

白衣非少年
TA貢獻1155條經驗 獲得超0個贊
您收到錯誤是因為您嘗試在這行代碼中將對象添加到 using 中map:append()
box.items = append(box.items, item)
同時box.items類型是map[string]Item.
type Cart struct {
items map[string]Item
}
append()內置函數只能用于切片數據類型。
我不確定您要做什么,是使用 map 還是 slice 作為.items. 但是,如果您希望該.items屬性是一個切片,則將您的代碼更改為:
type Cart struct {
items []Item
}
func NewCart() Cart {
return Cart{
items: make([]Item, 0)}
}
如果您希望該.items屬性是 a map,請將您的代碼更改為:
func NewCart() Cart {
return Cart{
items: map[string]Item{}}
}
func (box *Cart) AddItem(item Item) map[string]Item {
box.items[item.id] = item
return box.items
}
- 1 回答
- 0 關注
- 157 瀏覽
添加回答
舉報
0/150
提交
取消