Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Melaksanakan Kesaksamaan Kunci Tersuai untuk Peta Go?
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 }
Untuk membandingkan dua contoh Key, anda ingin menggunakan Equal anda sendiri fungsi:
func Equal(x Key, y Key) bool { return *x.a == *y.a }
Penyelesaian
Malangnya, Go tidak membenarkan anda menentukan fungsi pencincangan tersuai atau kesamaan untuk kunci peta. Sebaliknya, anda boleh menggunakan penyelesaian berikut:
func (k *Key) HashKey() int { return *(*k).a }
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"
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!