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
Susan Sarandonoriginal
2024-12-16 04:27:10977parcourir

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])
}

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)

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!

Déclaration:
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