Mengakses Kekunci Peta dengan Jenis Nilai Berbeza
Dalam Go, peta sememangnya generik, tetapi kelakuannya tidak kovarian disebabkan ketiadaan daripada jenis generik. Ini bermakna anda mungkin menghadapi senario di mana anda ingin mengakses kekunci peta dengan jenis nilai yang berbeza. Percubaan untuk menggunakan antara muka{} sebagai jenis nilai mungkin kelihatan intuitif, tetapi ia tidak berfungsi seperti yang diharapkan.
func main() { mapOne := map[string]int mapTwo := map[string]double mapThree := map[string]SomeStruct useKeys(mapOne) } func useKeys(m map[string]interface{}) { //something with keys here }
Walaupun boleh difahami untuk menginginkan penyelesaian yang elegan, anda perlu mengakui bahawa dalam Go , anda mungkin perlu meniru logik tertentu untuk peta dengan jenis nilai yang berbeza.
Namun, jika anda memerlukan fleksibiliti untuk mendapatkan kunci daripada mana-mana peta, pantulan boleh digunakan:
func useKeys(m interface{}) { v := reflect.ValueOf(m) if v.Kind() != reflect.Map { fmt.Println("not a map!") return } keys := v.MapKeys() fmt.Println(keys) }
Pendekatan ini membolehkan anda bekerja dengan sebarang jenis peta, memberikan akses kepada kuncinya.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Kekunci daripada Peta Go dengan Jenis Nilai Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!