Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Melaksanakan Kesaksamaan Tersuai untuk Kunci Peta dalam Go?
Kunci Peta Tersuai dengan Kesaksamaan Ditakrifkan Pengguna dalam Go
Dalam Go, peta menggunakan semantik setanding yang ketat untuk kunci peta. Ini bermakna pengaturcara tidak boleh melaksanakan fungsi cincang mereka sendiri dan operasi kesamaan untuk kunci peta seperti yang mereka boleh dalam bahasa lain.
Untuk menangani had ini, pertimbangkan pendekatan alternatif. Daripada menggunakan contoh struct sebagai kunci secara langsung, gunakan atribut terbitan struct yang berfungsi sebagai kunci peta yang sesuai dan mematuhi semantik kesamaan yang dikehendaki. Dalam kebanyakan kes, adalah wajar untuk memperoleh integer atau nilai rentetan sebagai kod cincang yang mewakili identiti tika.
Adalah penting untuk memastikan bahawa perlanggaran dalam kod cincang terbitan hanya berlaku apabila ia menunjukkan identiti semantik tulen bagi nilai yang disimpan. Ini bermakna bahawa nilai yang sepadan harus boleh ditukar ganti.
Contohnya:
type Key struct { a *int } func (k *Key) HashKey() int { return *(*k).a } k1, k2 := Key{intPtr(1)}, Key{intPtr(2)} m := map[int]string{} m[k1.HashKey()] = "one" m[k2.HashKey()] = "two" // m = map[int]string{1:"one", 2:"two"} m[k1.HashKey()] // => "one"
Walau bagaimanapun, ambil tahu tentang kebimbangan ketidakbolehubah apabila menggunakan pendekatan ini. Jika anda mengubah suai medan a dalam contoh di atas, tika itu tidak lagi boleh berfungsi sebagai kunci cincang kerana identitinya telah berubah.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Kesaksamaan Tersuai untuk Kunci Peta dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!