你好,我是 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 关注
- 134 浏览
添加回答
举报
0/150
提交
取消