map - 获取无效操作 : mymap ["title"] (type interface {} does not support indexing) when trying to index a map

标签 map go

我有 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/

相关文章:

c++ - 如何查看 map 中是否存在键?

Java数据结构

go - C 代码是否享受 Go GC 的碎片预防策略?

testing - go test `-parallel` vs `-test.parallel` 哪个标志优先?

map - 为什么绑定(bind)会影响我的 map 类型?

time - Clojure 写入文件映射与 doseq

c - 查询结构的多维映射的设计,该结构的数据在 C 中的某些源代码文件中隐藏

json - 戈朗 : Having trouble with nested JSON Unmarshaler

戈朗 : Testing several times using gobench

go - Go中明确作用域 block 的目的?