Go Maps dengan Kekunci Ditentukan Pengguna dan Kesaksamaan Tersuai
Melaksanakan peta Go dengan kunci yang ditentukan pengguna melibatkan pematuhan kepada peraturan kesaksamaan tertentu. Malangnya, operasi kesamaan terbina dalam Go tidak boleh disesuaikan untuk kunci peta. Walau bagaimanapun, penyelesaian yang berkesan wujud.
Daripada menggunakan langsung tika struct sebagai kunci, pertimbangkan untuk mendapatkan atribut unik yang boleh berfungsi sebagai kunci intrinsik dan selaras dengan semantik kesamaan yang anda inginkan. Sebagai contoh, anda boleh memperoleh nilai integer atau rentetan yang mewakili identiti tika.
Adalah penting untuk memastikan bahawa perlanggaran utama hanya berlaku apabila nilai yang sepadan mewakili identiti semantik sebenar. Ini memastikan nilai yang boleh ditukar ganti dipetakan dengan betul.
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"
Ingat, pendekatan ini memerlukan kunci tidak berubah. Mengubah suai medan dalam contoh di atas akan membatalkan identiti kunci, menjadikannya tidak sesuai sebagai kunci cincang.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Struktur Ditakrifkan Pengguna sebagai Kekunci dalam Peta Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!