我在GOLANG
从地图中获取数据
res = map[Event_dtmReleaseDate:2009-09-15 00:00:00 +0000 +00:00 Trans_strGuestList:<nil> strID:TSTB]
如何从上述结果中获取以下值
1.Event_dtmReleaseDate
2.strID
3.Trans_strGuestList
我尝试了什么:
错误:res.Map undefined(类型map [string] interface {}没有字段或方法Map)
错误:v.id undefined(类型map [string] interface {}没有字段或方法ID)
任何建议都将不胜感激
答案 0 :(得分:42)
您的变量是map[string]interface {}
,这意味着键是一个字符串,但值可以是任何值。一般来说,访问它的方法是:
mvVar := myMap[key].(VariableType)
或者在字符串值的情况下:
id := res["strID"].(string)
请注意,如果类型不正确或地图中不存在该键,则会出现混乱,但我建议您阅读有关Go地图的更多信息并输入断言。
在此处阅读地图:http://golang.org/doc/effective_go.html#maps
关于类型断言和界面转换:http://golang.org/doc/effective_go.html#interface_conversions
没有机会恐慌的安全方法是这样的:
var id string
var ok bool
if x, found := res["strID"]; found {
if id, ok = x.(string); !ok {
//do whatever you want to handle errors - this means this wasn't a string
}
} else {
//handle error - the map didn't contain this key
}
答案 1 :(得分:0)
通常,要从地图中获取价值,您必须执行以下操作:
package main
import "fmt"
func main() {
m := map[string]string{"foo": "bar"}
value, exists := m["foo"]
// In case when key is not present in map variable exists will be false.
fmt.Printf("key exists in map: %t, value: %v \n", exists, value)
}
结果将是:
key exists in map: true, value: bar