亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

append 的第一個參數必須是 slice(struct 和 golang)

append 的第一個參數必須是 slice(struct 和 golang)

Go
狐的傳說 2023-05-15 14:48:00
你好,我是 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

}


查看完整回答
反對 回復 2023-05-15
  • 1 回答
  • 0 關注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號