J'ai des données qui sont dans une carte, et je veux indexer dans la carte par clé pour obtenir une valeur.
mdi, err := page.Metadata()
fmt.Println(mdi["title"])
Cependant, je reçois toujours le message d'erreur invalid operation: mdi["title"] (type interface {} does not support indexing)
. Je suis confus, car les données sont une carte et je devrais pouvoir les indexer pour obtenir la valeur. Dans le cas où le type n'était pas clair, j'ai également essayé de convertir la valeur en une chaîne:
title, ok := mdi["title"].(string)
checkOk(ok)
fmt.Println(title)
Cependant, j'ai reçu le même message d'erreur. Qu'est-ce que je fais mal?
Le type de données ici était la clé. mdi
n'était pas en fait une carte, mais un interface{}
, qui pourrait être n'importe quoi - une carte, une chaîne, un int. Vous devez d'abord l'asserter à une carte avec les types de clé/valeur attendus, ou faire le commutateur maladroit case
décrit dans JSON et Go .
mdi, err := page.Metadata()
md, ok := mdi.(map[string]interface{})
fmt.Println(md["title"])