问题描述
我有地图中的数据,我想通过键索引到地图中以获取值。
I have data that's in a map, and I want to index into the map by key to get a value.
mdi, err := page.Metadata()
fmt.Println(mdi["title"])
但是,我仍然收到错误消息无效的操作:mdi [ title](类型接口{}不支持索引)
。我很困惑,因为数据是一个映射,我应该能够对其进行索引以获得值。如果类型不清楚,我还尝试将值转换为字符串:
However I keep getting the error message invalid operation: mdi["title"] (type interface {} does not support indexing)
. I am confused, because the data is a map and I should be able to index into it to get the value. In case the type wasn't clear, I also tried to cast the value to a string:
title, ok := mdi["title"].(string)
checkOk(ok)
fmt.Println(title)
但是,我得到了相同的错误消息。我在做什么错?
However, I got the same error message. What am I doing wrong?
推荐答案
此处的数据类型是关键。 mdi
实际上不是地图,而是 interface {}
,它可以是任何东西-地图,字符串,一个int。您需要首先将其声明为具有预期键/值类型的映射,或者执行。
The data type here was the key. mdi
was not actually a map, but an interface{}
, which could be anything - a map, a string, an int. You need to assert it to a map with expected key/value types first, or do the awkward case
switch outlined in JSON and Go.
mdi, err := page.Metadata()
md, ok := mdi.(map[string]interface{})
fmt.Println(md["title"])
这篇关于得到无效的操作:尝试为地图建立索引时,mymap [“ title”](类型接口{}不支持索引)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!