要追加的第一个参数必须是slice(struct和golang)
您好,我是golang的乞丐,我正在开发一个购物车应用程序,每次我尝试执行代码时,它都会显示“附加的第一个参数必须是slice”,下面是代码 打包车要追加的第一个参数必须是slice(struct和golang),go,Go,您好,我是golang的乞丐,我正在开发一个购物车应用程序,每次我尝试执行代码时,它都会显示“附加的第一个参数必须是slice”,下面是代码 打包车 type Cart struct { items map[string]Item } type Item struct { id string name string price float32 quantity int } func NewItem(i string, n st
type 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)
}
出现错误是因为您试图使用
append()
在这一行代码中将对象添加到map
中:
box.items = append(box.items, item)
同时,box.items
类型是一个map[string]项
type Cart struct {
items map[string]Item
}
append()
内置函数
我不确定您想做什么,是使用贴图还是切片作为
.items
的类型。但是,如果希望.items
属性为切片,请将代码更改为:
type Cart struct {
items []Item
}
func NewCart() Cart {
return Cart{
items: make([]Item, 0)}
}
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
}
如果希望.items
属性成为映射
,请将代码更改为:
type Cart struct {
items []Item
}
func NewCart() Cart {
return Cart{
items: make([]Item, 0)}
}
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
}
出现错误是因为您试图使用
append()
在这一行代码中将对象添加到map
中:
box.items = append(box.items, item)
同时,box.items
类型是一个map[string]项
type Cart struct {
items map[string]Item
}
append()
内置函数
我不确定您想做什么,是使用贴图还是切片作为
.items
的类型。但是,如果希望.items
属性为切片,请将代码更改为:
type Cart struct {
items []Item
}
func NewCart() Cart {
return Cart{
items: make([]Item, 0)}
}
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
}
如果希望.items
属性成为映射
,请将代码更改为:
type Cart struct {
items []Item
}
func NewCart() Cart {
return Cart{
items: make([]Item, 0)}
}
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
}