我有一个地图中的数据,我想按键索引到地图以获取值.
mdi, err := page.Metadata()
fmt.Println(mdi["title"])
Run Code Online (Sandbox Code Playgroud)
但是我一直收到错误消息invalid operation: mdi["title"] (type interface {} does not support indexing).我很困惑,因为数据是一个地图,我应该能够索引它以获得值.如果类型不清楚,我也尝试将值转换为字符串:
title, ok := mdi["title"].(string)
checkOk(ok)
fmt.Println(title)
Run Code Online (Sandbox Code Playgroud)
但是,我得到了相同的错误消息.我究竟做错了什么?
Kev*_*rke 68
这里的数据类型是关键.mdi实际上并不是一张地图,而是一张interface{}可以是任何东西的地图 - 地图,字符串,整数.您需要首先将其断言为具有预期键/值类型的映射,或者执行JSON和Go中case概述的笨拙开关.
mdi, err := page.Metadata()
md, ok := mdi.(map[string]interface{})
fmt.Println(md["title"])
Run Code Online (Sandbox Code Playgroud)