Mencari Elemen dalam Go Slices
Apabila bekerja dengan kepingan struct dalam Go, mencari elemen tertentu mengikut kekunci boleh menjadi tugas biasa. Mari kita terokai cara untuk mencapai ini menggunakan pelbagai pendekatan:
Fungsi Generik: slices.IndexFunc()
Setakat Go 1.21, pakej slices dalam perpustakaan standard memperkenalkan fungsi carian generik dipanggil slices.IndexFunc():
func IndexFunc[S ~[]E, E any](s S, f func(E) bool) int
Fungsi ini mengembalikan indeks i pertama dengan f(s[i]) adalah benar, atau -1 jika tiada unsur padanan ditemui. Untuk mencari kunci dalam kepingan struct menggunakan kepingan.IndexFunc():
idx := slices.IndexFunc(myconfig, func(c Config) bool { return c.Key == "key1" })
Untuk Gelung
Apabila menggunakan versi terdahulu Go atau untuk asas pendekatan, anda boleh menggunakan gelung for:
for _, v := range myconfig { if v.Key == "key1" { // Found } }
Dioptimumkan Untuk Gelung
Untuk prestasi yang lebih baik, disyorkan untuk menggunakan gelung for yang beroperasi pada indeks i dan bukannya menyalin elemen:
for i := range myconfig { if myconfig[i].Key == "key1" { // Found } }
Peta untuk Carian Cekap
Jika mencari elemen dengan kunci adalah operasi yang kerap, pertimbangkan untuk membina peta daripada kepingan. Ini membolehkan carian berasaskan kunci pantas:
// Build a config map: confMap := map[string]string{} for _, v := range myconfig { confMap[v.Key] = v.Value } // To find a value by key: if v, ok := confMap["key1"]; ok { // Found }
Pertimbangan:
Atas ialah kandungan terperinci Bagaimana Cara Mencari Elemen dalam Go Slices dengan Kekunci dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!