Maison > développement back-end > Golang > Comment réparer « l'interface de type {} ne prend pas en charge l'indexation » dans Go Maps ?

Comment réparer « l'interface de type {} ne prend pas en charge l'indexation » dans Go Maps ?

Mary-Kate Olsen
Libérer: 2024-12-25 10:18:17
original
683 Les gens l'ont consulté

How to Fix

Comment indexer une carte contenant un tableau d'objets dans Go : résolution de l'erreur « Type Interface {} ne prend pas en charge l'indexation »

Indexation une carte contenant un tableau d'objets dans Go peut conduire à l'erreur "type interface {} ne prend pas en charge l'indexation". Cette erreur se produit car Go ne connaît pas le type attendu des éléments du tableau, qui sont représentés par le type d'interface.

Pour surmonter cette erreur et récupérer l'élément souhaité, vous devez convertir explicitement l'interface{} valeur au type spécifique que vous attendez.

Considérez le mappage suivant :

Map := make(map[string]interface{})
Map["Users"] = Users_Array
Map["Hosts"] = Hosts_Array
Copier après la connexion

Pour accéder au premier élément du tableau "Utilisateurs", utilisez ce qui suit code :

Users_Array := Map["Users"].([]User)
firstUser := Users_Array[0]
Copier après la connexion

De même, pour le tableau "Hosts" :

Hosts_Array := Map["Hosts"].([]Host)
firstHost := Hosts_Array[0]
Copier après la connexion

Cette conversion vers le type spécifique garantit que l'opération d'indexation peut être effectuée avec succès. L’échec de la conversion entraînera l’erreur « type interface {} ne prend pas en charge l’indexation ».

Voici un exemple illustrant le processus de conversion et d’indexation :

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])
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal