首頁 >後端開發 >Golang >為什麼我不能在 Go 中的映射條目上使用指標接收器?

為什麼我不能在 Go 中的映射條目上使用指標接收器?

Barbara Streisand
Barbara Streisand原創
2024-12-21 02:00:14263瀏覽

Why Can't I Use Pointer Receivers on Map Entries in Go?

在 Go 中取消引用地圖索引

在 Go 程式中,無法直接引用地圖索引。此問題的出現​​是由於映射的動態特性,其中條目的位址可能會在映射增長或收縮期間發生變化。因此,嘗試在映射項目上呼叫指標接收器方法會導致以下錯誤:

cannot call pointer method on f[0]
cannot take the address of f[0]

要解決此問題,只需從有問題的方法中的方法接收器中刪除星號(*) :

func (c Cashier) Buy(itemNum int){
    item, pass := c.items[itemNum]

    if pass{
        if item.amount == 1{
            delete(c.items, itemNum)
        } else{
            item.amount--
            c.items[itemNum] = item 
        }
        c.cash++
    }
}

藉由這樣做,該方法不再是指標接收器,允許在映射條目上呼叫它而不會出現問題。

以上是為什麼我不能在 Go 中的映射條目上使用指標接收器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn