How to tell if the value of a map is undefined in Go?

huangapple go评论94阅读模式
英文:

How to tell if the value of a map is undefined in Go?

问题

假设我有一个像这样的映射:

m := map[string]interface{}{}

现在我得到一个字符串"a",我想知道m["a"]中是否有值,我该如何判断?

目前我看到,m["a"]永远不会是nil,所以我不能将其与nil进行比较以查看是否有值。此外,也没有一个名为undefined的关键字可以用来判断。

英文:

Suppose I have a map like:

m := map[string]interface{}{}

Now I get a string "a", I want to know if there's value in m["a"], how can I tell?

As I can see now, m["a"] is never nil, so I can't compare it to nil to see if there's anything. Also, there's not a keyword named undefined to do that..

答案1

得分: 4

map的访问返回两个值,第二个值是一个布尔值,告诉你是否存在该值。

你可以使用以下标准习语:

if elm, ok := m["a"]; ok {
    // 存在元素
} else {
    // 不存在元素
} 

文档

英文:

map access returns two values, the second one being a boolean telling you if there's a value.

You can use this standard idiom :

if elm, ok := m["a"]; ok {
    // there's an element
} else {
    // no element
} 

Documentation

huangapple
  • 本文由 发表于 2013年12月28日 21:51:34
  • 转载请务必保留本文链接:https://go.coder-hub.com/20815320.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定