print - iterate map golang
Obtención de una operación no válida: mymap["title"](la interfaz de tipo{} no admite la indexación) al intentar indexar un mapa (2)
El tipo de datos aquí fue la clave. mdi
no era en realidad un mapa, sino una interface{}
, que podía ser cualquier cosa, un mapa, una cadena, un int. Primero, debe imponerlo en un mapa con los tipos clave / valor esperados, o hacer el extraño cambio de case
descrito en JSON y Go .
mdi, err := page.Metadata()
md, ok := mdi.(map[string]interface{})
fmt.Println(md["title"])
Tengo datos que están en un mapa y quiero indexarlos por clave para obtener un valor.
mdi, err := page.Metadata()
fmt.Println(mdi["title"])
Sin embargo, sigo obteniendo la invalid operation: mdi["title"] (type interface {} does not support indexing)
mensaje de error invalid operation: mdi["title"] (type interface {} does not support indexing)
. Estoy confundido, porque los datos son un mapa y debería poder indexarlos para obtener el valor. En caso de que el tipo no fuera claro, también intenté convertir el valor en una cadena:
title, ok := mdi["title"].(string)
checkOk(ok)
fmt.Println(title)
Sin embargo, tengo el mismo mensaje de error. ¿Qué estoy haciendo mal?
Es probable que su página. Metadata devuelva un puntero en lugar de un valor. El siguiente código funciona a la perfección:
package main
import "fmt"
type SomeCustomType map[string]interface{}
func PageData() SomeCustomType {
return SomeCustomType{"bar": "baz"}
}
func main() {
fmt.Printf("%+v/n", PageData())
}