代码如下:
jMap := make(map[string]interface{})
err := json.Unmarshal(util.GetByteMsgFromNetConn(conn), &jMap)
if err != nil {
log.Println("解析 json 字符串发生错误:", err.Error())
conn.Close()
}
var usernameTmp string
if user, exist := jMap["user"]; exist {
if reflect.ValueOf(user).Kind() == reflect.Map {
usernameTmp = user.(map[string]string)["username"]
}
}
jMap["user"] 是一个 map 类型的变量,请问我该如何将这个 map 里面的 username 赋值给 usernameTmp 变量呢?
我现在这种写法会报错如下:
panic: interface conversion: interface {} is map[string]interface {}, not map[string]string
但是我如果写成:
usernameTmp = user.(map[string]interface{})["username"]
编辑器又提示错误......
需要第二次断言:
usernameTmp = user.(map[string]interface{})["username"].(string)
不好意思,没人回答,我自己又解决了,只能自问自答了。