Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Melaksanakan Kesaksamaan Kunci Tersuai untuk Peta Go?

Bagaimanakah Saya Boleh Melaksanakan Kesaksamaan Kunci Tersuai untuk Peta Go?

Barbara Streisand
Lepaskan: 2025-01-02 21:31:39
asal
928 orang telah melayarinya

How Can I Implement Custom Key Equality for Go Maps?

Kesaksamaan Kunci Tersuai untuk Peta Go

Apabila mencipta peta dalam Go, anda boleh menggunakan sebarang jenis sebagai kunci asalkan ia melaksanakan antara muka yang setanding. Secara lalai, Go menggunakan operator kesamarataan terbina dalam (==) untuk membandingkan kunci. Walau bagaimanapun, mungkin terdapat keadaan di mana anda ingin menentukan kriteria kesaksamaan anda sendiri.

Contoh

Pertimbangkan jenis kunci tersuai berikut:

type Key struct {
    a *int
}
Salin selepas log masuk

Untuk membandingkan dua contoh Key, anda ingin menggunakan Equal anda sendiri fungsi:

func Equal(x Key, y Key) bool {
    return *x.a == *y.a
}
Salin selepas log masuk

Penyelesaian

Malangnya, Go tidak membenarkan anda menentukan fungsi pencincangan tersuai atau kesamaan untuk kunci peta. Sebaliknya, anda boleh menggunakan penyelesaian berikut:

  1. Terbitkan Atribut Utama: Daripada menggunakan struct Kunci secara langsung sebagai kunci, terbitkan atribut (cth., integer atau rentetan) yang berfungsi sebagai identiti untuk kunci. Pastikan perlanggaran hanya berlaku untuk kekunci semantik yang sama.
  2. Laksanakan Fungsi Cincang: Cipta kaedah pada Kunci yang mengira atribut terbitan dan mengembalikannya sebagai integer (untuk pencincangan).
func (k *Key) HashKey() int {
    return *(*k).a
}
Salin selepas log masuk

Contoh Penggunaan

Menggunakan contoh di atas, peta akan menjadi:

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

Langkah Berjaga-jaga

Ingat bahawa pendekatan ini bergantung pada kebolehubah daripada atribut kunci terbitan. Jika mana-mana medan dalam struct Kunci berubah, identiti kunci berubah dan ia tidak akan berfungsi seperti yang diharapkan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Kesaksamaan Kunci Tersuai untuk Peta 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