php中文网

Go 语言:如何从二维 Map 中获取指定字段的值?

php中文网

获取二维 map 中指定字段值

在 go 语言中,如何获取一个二维 map 中的某个特定字段的值?

代码示例如下:

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 {
        // 问题出在这里,由于 user 已经断言为 map[string]interface{} 类型,因此不能直接访问其 map[string]string 类型的字段
        usernametmp = user.(map[string]interface{})["username"]
    }
}

如何正确获取 username 字段的值?

答案:

需要对 user 变量进行第二次断言,以将其转换为 map[string]string 类型:

usernameTmp = user.(map[string]interface{})["username"].(string)

以上就是Go 语言:如何从二维 Map 中获取指定字段的值?的详细内容,更多请关注php中文网其它相关文章!