Rumah > pembangunan bahagian belakang > Golang > Mengapakah Saya Tidak Boleh Menggunakan Penerima Penunjuk pada Entri Peta dalam Go?

Mengapakah Saya Tidak Boleh Menggunakan Penerima Penunjuk pada Entri Peta dalam Go?

Barbara Streisand
Lepaskan: 2024-12-21 02:00:14
asal
224 orang telah melayarinya

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

Membatalkan Indeks Peta dalam Go

Dalam program Go, indeks peta tidak boleh dirujuk secara langsung. Isu ini timbul disebabkan sifat dinamik peta, di mana alamat entri mungkin berubah semasa pertumbuhan atau pengecutan peta. Akibatnya, cubaan memanggil kaedah penerima penuding pada entri peta membawa kepada ralat berikut:

cannot call pointer method on f[0]
cannot take the address of f[0]
Salin selepas log masuk

Untuk menyelesaikan isu ini, cuma alih keluar tanda bintang (*) daripada penerima kaedah dalam kaedah bermasalah:

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++
    }
}
Salin selepas log masuk

Dengan berbuat demikian, kaedah ini bukan lagi penerima penunjuk, membenarkan ia dipanggil pada entri peta tanpa isu.

Atas ialah kandungan terperinci Mengapakah Saya Tidak Boleh Menggunakan Penerima Penunjuk pada Entri Peta dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan