vivo print google golang from check map go

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