Ralat Sintaks: Akses Indeks Ditolak untuk Jenis Antara Muka
Apabila bekerja dengan peta jenis peta[rentetan]antara muka{} dalam Go, ia adalah penting untuk memahami mengapa mengakses nilai menggunakan notasi indeks boleh mengakibatkan "antara muka jenis {} tidak menyokong pengindeksan" yang mengecewakan ralat.
Punca Punca: Antara Muka{}
Antara Muka{} dalam Go bertindak sebagai bunglon sistem jenis, membenarkan objek pelbagai jenis dipegang dalam satu pembolehubah atau melalui fungsi. Walau bagaimanapun, fleksibiliti datang pada kos: antara muka{} tidak mentakrifkan sebarang kaedah atau sifat tertentu, menjadikannya mustahil untuk melakukan tindakan seperti pengindeksan terus pada antara muka.
Cara Menyelesaikan Masalah
Untuk mengatasi isu pengindeksan ini, kita perlu menghantar nilai antara muka{} secara eksplisit kepada jenis yang betul. Go menyediakan beberapa operator pemutus jenis untuk memudahkan proses ini. Mari kita teliti contoh:
package main import ( "fmt" ) type Host struct { Name string } func main() { Map := make(map[string]interface{}) Map["hosts"] = []Host{Host{"test.com"}, Host{"test2.com"}} // Type cast the interface{} to a slice of Host hm := Map["hosts"].([]Host) fmt.Println(hm[0]) }
Dalam contoh ini, kami mempunyai peta[rentetan]antara muka{} yang dipanggil "Peta" di mana kami telah menyimpan sekeping objek Hos sebagai nilai yang dikaitkan dengan " kunci hos". Untuk mengakses elemen daripada kepingan ini, kami menaip hantar nilai antara muka{} yang disimpan dalam Map["hosts"] ke sekeping Host.
Pautan Taman Permainan
Untuk mencuba kod ini dan menyaksikan sendiri hasilnya, navigasi ke pautan berikut: [Taman permainan Pautan](https://go.dev/play/p/dJrycL1QD0C)
Atas ialah kandungan terperinci Mengapakah Mengakses `map[string]interface{}` dalam Go Menghasilkan Ralat 'antara muka jenis {} tidak menyokong pengindeksan'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!