我有 map 中的数据,我想通过键索引到 map 中以获取值。
mdi, err := page.Metadata()
fmt.Println(mdi["title"])
但是我不断收到错误消息invalid operation: mdi["title"] (type interface {} does not support indexing)
。我很困惑,因为数据是一张 map ,我应该能够对其进行索引以获得值(value)。如果类型不清楚,我还尝试将值转换为字符串:
title, ok := mdi["title"].(string)
checkOk(ok)
fmt.Println(title)
但是,我收到了相同的错误消息。我做错了什么?
最佳答案
这里的数据类型是关键。 mdi
实际上并不是一个映射,而是一个interface{}
,它可以是任何东西——一个映射、一个字符串、一个整数。您需要先将其断言到具有预期键/值类型的映射,或者执行 JSON and Go 中概述的笨拙的 case
开关.
mdi, err := page.Metadata()
md, ok := mdi.(map[string]interface{})
fmt.Println(md["title"])
关于map - 获取无效操作 : mymap ["title"] (type interface {} does not support indexing) when trying to index a map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25214036/