Maison >développement back-end >Golang >Comment réparer « l'interface de type {} ne prend pas en charge l'indexation » dans Go Maps ?
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
Pour accéder au premier élément du tableau "Utilisateurs", utilisez ce qui suit code :
Users_Array := Map["Users"].([]User) firstUser := Users_Array[0]
De même, pour le tableau "Hosts" :
Hosts_Array := Map["Hosts"].([]Host) firstHost := Hosts_Array[0]
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]) }
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!