Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Melaksanakan Perbandingan Kunci Tersuai dalam Peta Go?
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 }
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]
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!