Rumah > pembangunan bahagian belakang > Golang > Mengapakah Mengakses `map[string]interface{}` dalam Go Menghasilkan Ralat 'antara muka jenis {} tidak menyokong pengindeksan'?

Mengapakah Mengakses `map[string]interface{}` dalam Go Menghasilkan Ralat 'antara muka jenis {} tidak menyokong pengindeksan'?

Mary-Kate Olsen
Lepaskan: 2024-12-07 12:29:13
asal
614 orang telah melayarinya

Why Does Accessing `map[string]interface{}` in Go Result in a

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])
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan