Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Melaksanakan Perbandingan Kunci Tersuai dalam Peta Go?

Bagaimanakah Saya Boleh Melaksanakan Perbandingan Kunci Tersuai dalam Peta Go?

Barbara Streisand
Lepaskan: 2024-12-16 06:11:16
asal
758 orang telah melayarinya

How Can I Implement Custom Key Comparison in Go Maps?

Perbandingan Kunci Tersuai dalam Peta Go

Dalam Go, peta memerlukan kunci yang setanding, tetapi kadangkala operasi kesaksamaan tersuai diingini. Senario ini timbul apabila struktur data tersuai, seperti struktur yang ditentukan pengguna, digunakan sebagai kunci peta.

Untuk memintas pengehadan ini, penyelesaian melibatkan memperoleh atribut berasingan daripada struct yang berfungsi sebagai peta kunci. Atribut terbitan ini harus mempunyai semantik kesamaan yang diingini dan harus boleh digunakan secara intrinsik sebagai kunci.

Pertimbangkan contoh berikut:

type Key struct {
    a *int
}

func (k *Key) HashKey() int {
    return *k.a
}
Salin selepas log masuk

Dalam contoh ini, kaedah HashKey memperoleh nilai integer yang mewakili identiti Kunci. Peta kemudiannya boleh dibina menggunakan atribut terbitan ini:

k1, k2 := Key{intPtr(1)}, Key{intPtr(2)}
m := map[int]string{}
m[k1.HashKey()] = "one"
m[k2.HashKey()] = "two"

fmt.Println(m) // Outputs: map[1:one 2:two]
Salin selepas log masuk

Perhatikan bahawa perbandingan utama bergantung semata-mata pada kaedah HashKey(), membenarkan semantik kesaksamaan tersuai.

Ketidakbolehubah Pertimbangan

Walau bagaimanapun, kebolehubahan adalah penting apabila menggunakan ini pendekatan. Jika medan struct asal diubah suai, tika itu tidak lagi boleh digunakan sebagai kunci peta kerana identitinya telah berubah.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Perbandingan Kunci Tersuai dalam Peta Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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