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

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

Susan Sarandon
Libérer: 2024-12-16 04:27:10
original
981 Les gens l'ont consulté

How to Resolve the

Surmonter l'erreur : "type interface {} ne prend pas en charge l'indexation" dans Go

Lorsque vous travaillez avec une carte contenant diverses interfaces{} valeurs, vous pouvez rencontrer une erreur lorsque vous tentez de l'indexer, en particulier "le type interface {} ne prend pas en charge l'indexation". Cela se produit car le type interface{} ne prend pas intrinsèquement en charge l'indexation.

Pour réussir à indexer et accéder aux éléments de cette carte, il est nécessaire de convertir explicitement la valeur interface{} en type attendu, comme une tranche. . Cette conversion peut être réalisée en spécifiant le type de cible entre crochets.

Par exemple, considérons le code Go suivant :

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"}}

    // Convert interface{} to a slice of Host
    hm := Map["hosts"].([]Host)
    fmt.Println(hm[0])
}
Copier après la connexion

Dans cet exemple, la carte "Map" est renseignée avec une tranche de structures hôtes. Pour accéder au premier élément de la tranche, vous devez convertir la valeur interface{} dans "Map['hosts']" en type []Host. Cela se fait avec l'expression :

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

Avec la conversion, vous pouvez accéder aux éléments de la tranche comme n'importe quelle tranche Go standard. Dans ce cas, le résultat sera "test.com" car il s'agit du premier élément de la tranche d'hôtes.

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