如何判断Go中的地图值是否未定义?

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

本问题已经有最佳答案,请猛点这里访问。

假设我有一张这样的地图:

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

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

正如我现在看到的,m["a"]从来不是nil,所以我不能把它和nil比较,看是否有什么。而且,没有一个名为undefined的关键字可以做到这一点。


map access返回两个值,第二个值是一个布尔值,告诉您是否有一个值。

您可以使用以下标准成语:

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

文档