类型为嵌套的map [string] interface {}的映射返回“类型interface {}不支持索引”
我在使用类型化嵌套地图时遇到一个非常奇怪的问题。
gore version 0.2.6 :help for help
gore> type M map[string]interface{}
gore> m := M{"d": M{}}
main.M{"d":main.M{}}
gore> m["d"]["test"] = "will fail"
# command-line-arguments
/tmp/288178778/gore_session.go:13:8: invalid operation: m["d"]["test"] (type interface {} does not support indexing)
/tmp/288178778/gore_session.go:14:17: invalid operation: m["d"]["test"] (type interface {} does not support indexing)
error: exit status 2
exit status 2
gore> m["e"] = "this works"
"this works"
gore> m
main.M{"d":main.M{}, "e":"this works"}
我究竟做错了什么?为什么仅由于地图嵌套在地图中而突然失败?
-
让我们来看一下:
foo:=map[string]interface{}{}
定义时
map[string]interface{}
,可以为给定的字符串索引设置所需的任何类型(满足
空接口interface{}
协定的任何类型,也可以是任何类型)。foo["bar"]="baz" foo["baz"]=1234 foo["foobar"]=&SomeType{}
但是,当您尝试访问某些键时,您不会得到一些int,字符串或任何自定义结构,但会得到一个
interface{}
var bar string = foo["bar"] // error
在这里,我们进行类型断言(实时示例):
if bar,ok := foo["bar"].(string); ok { fmt.Println(bar) }
但是正如@Volker所说的,作为一个初学者,这是一个好主意,使go之行更加熟悉这些概念。
-
在Golang中访问类型为map [string] interface {}的嵌套地图
2021-02-01 关注 0 浏览121 1答案
-
gob:类型未注册的接口:map [string] interface {}
2021-02-01 关注 0 浏览76 1答案
-
使用的表类型不支持SPATIAL索引
2021-05-10 关注 0 浏览86 1答案
-
类型接口{}不支持golang中的索引编制
2021-02-01 关注 0 浏览100 1答案
-
以下python数据类型中不支持索引访问的是( )
2021-11-03 关注 0 浏览246 1答案
-
Jersey 415不支持的媒体类型
2021-02-02 关注 0 浏览122 1答案
-
不支持Xcode iOS 8键盘类型
2021-01-31 关注 0 浏览100 1答案
-
Python不支持的数据类型是
2022-05-08 关注 0 浏览21 1答案
-
python不支持的数据类型是
2022-05-23 关注 0 浏览23 1答案
-
Python不支持的数据类型有
2022-03-03 关注 0 浏览40 1答案