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!