Maison > développement back-end > Golang > Comment indexer dans une interface{} Map in Go ?

Comment indexer dans une interface{} Map in Go ?

Patricia Arquette
Libérer: 2024-12-18 11:50:12
original
521 Les gens l'ont consulté

How to Index into an interface{} Map in Go?

Comment indexer une carte d'interface dans Go : résoudre "le type interface {} ne prend pas en charge l'indexation"

Dans Go, tentative d'indexation une carte interface{} avec une clé spécifique peut conduire à l'erreur "type interface {} ne prend pas en charge l'indexation". Cela se produit lorsque vous essayez d'accéder à des éléments d'une carte où les valeurs sont stockées en tant qu'interfaces et où les types spécifiques de ces valeurs sont inconnus.

Une façon de surmonter cette erreur consiste à transtyper explicitement la valeur renvoyée par le mappez en utilisant le type de tranche que vous attendez de la valeur. Par exemple, considérons l'extrait de code suivant dans lequel une carte appelée TopologyMap contient des mappages de chaînes vers des tableaux d'objets :

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

Pour récupérer des éléments de cette carte, vous pouvez utiliser la syntaxe suivante, mais cela entraînera l'erreur "type interface {} ne prend pas en charge l'indexation" :

Map["Users"][0]
Copier après la connexion

Pour résoudre ce problème, convertissez explicitement la valeur de l'interface en son type souhaité à l'aide d'une assertion de type. Voici un exemple qui montre comment procéder pour une carte de chaînes et de tranches d'hôtes :

import (
    "fmt"
)

type Host struct {
    Name string
}

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

    hm := Map["hosts"].([]Host)
    fmt.Println(hm[0])
}
Copier après la connexion

Dans cet exemple, nous convertissons explicitement la valeur stockée sous la clé "hosts" en une tranche de Objets hôtes, permettant d'accéder à des éléments hôtes individuels.

En utilisant cette approche, vous pouvez indexer efficacement une carte d'interface{} et récupérer les valeurs spécifiques dont vous avez besoin, même si leurs types ne sont pas connu au moment de la compilation.

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