Вы получаете ошибку, потому что вы пытались добавить объект в map
, используя append()
, в этой строке кода:
box.items = append(box.items, item)
Между тем тип box.items
является map[string]Item
.
type Cart struct {
items map[string]Item
}
Встроенная функция append()
может использоваться только с типом данных среза .
Я не уверен, кто выпытаясь сделать, использовать ли карту или фрагмент в качестве типа .items
.Но если вы хотите, чтобы свойство .items
было слайсом, измените свой код на следующий:
type Cart struct {
items []Item
}
func NewCart() Cart {
return Cart{
items: make([]Item, 0)}
}
Если вы хотите, чтобы свойство .items
было 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
}