Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Membetulkan 'antara muka jenis {} Tidak Menyokong Pengindeksan' dalam Peta Go?

Bagaimana untuk Membetulkan 'antara muka jenis {} Tidak Menyokong Pengindeksan' dalam Peta Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-25 10:18:17729semak imbas

How to Fix

Cara Mengindeks Peta yang Mengandungi Susunan Objek dalam Go: Menyelesaikan Ralat "Antara Muka Jenis {} Tidak Menyokong Pengindeksan"

Pengindeksan peta yang mengandungi tatasusunan objek dalam Go boleh membawa kepada ralat "antara muka jenis {} tidak menyokong pengindeksan." Ralat ini berlaku kerana Go tidak mengetahui jenis unsur tatasusunan yang diharapkan, yang diwakili oleh jenis antara muka.

Untuk mengatasi ralat ini dan mendapatkan semula elemen yang dikehendaki, anda perlu menukar antara muka secara eksplisit{} nilai kepada jenis khusus yang anda jangkakan.

Pertimbangkan peta berikut:

Map := make(map[string]interface{})
Map["Users"] = Users_Array
Map["Hosts"] = Hosts_Array

Untuk mengakses elemen pertama Tatasusunan "Pengguna", gunakan kod berikut:

Users_Array := Map["Users"].([]User)
firstUser := Users_Array[0]

Begitu juga, untuk tatasusunan "Hos":

Hosts_Array := Map["Hosts"].([]Host)
firstHost := Hosts_Array[0]

Penukaran ini kepada jenis tertentu memastikan operasi pengindeksan boleh dilakukan dengan jayanya. Kegagalan untuk melaksanakan penukaran akan mengakibatkan ralat "antara muka jenis {} tidak menyokong pengindeksan".

Berikut ialah contoh yang menunjukkan proses penukaran dan pengindeksan:

package main

import "fmt"

type Host struct {
    Name string
}

type User struct {
    Name string
}

func main() {
    Map := make(map[string]interface{})
    Map["hosts"] = []Host{{"test.com"}, {"test2.com"}}
    Map["users"] = []User{{"john"}, {"jane"}}

    hm := Map["hosts"].([]Host)
    fmt.Println(hm[0])

    um := Map["users"].([]User)
    fmt.Println(um[0])
}

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan 'antara muka jenis {} Tidak Menyokong Pengindeksan' dalam Peta Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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