检测映射中的键是否存在结构

根据地图上的 Golang 文档,


如果请求的键不存在,我们将获得值类型的零值。在这种情况下,值类型是 int,所以零值是 0:


j := m["root"] // j == 0

所以我试图确定一个结构是否存在给定的字符串,我将如何确定这一点?我会检查一个带有零值的空结构吗?这里的比较会是什么样子?


type Hello struct{}

structMap := map[string]Hello{}

j := structMap["example"]

if(j==?) {

 ...

}


温温酱
浏览 185回答 1
1回答

慕妹3146593

使用特殊的“逗号,确定”形式来说明是否在地图中找到了密钥。Go Spec:索引表达式:特殊形式的赋值或初始化中使用a的类型映射上的索引表达式map[K]Vv, ok = a[x]v, ok := a[x]var v, ok = a[x]产生一个额外的无类型布尔值。的值ok是true键x是否存在于地图中,false否则。所以在你的代码中:type Hello struct{}structMap := map[string]Hello{}if j, ok := structMap["example"]; !ok {    // "example" is not in the map}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go