Map item test as an expression
本问题已经有最佳答案,请猛点这里访问。
Go教程介绍如何测试地图中是否存在密钥:
1 2 3 4 5 | m := make(map[string]int) m["Answer"] = 42 v, ok := m["Answer"] if ok { Do Something if set } if !ok { Do Something if not set } |
有没有一种方法可以不用赋值、表达式或类似的东西来测试它:
1 2 | if m["Answer"] IS NOT NULL { Do Something if set } if m["Answer"] IS NULL { Do Something if not set } |
或
1 | fmt.Println(m["Answer"] == nil) |
如果不想存储值,可以使用
如。
1 2 3 4 5 6 | _, ok := m["Answer"] if !ok { // do something } else { // do something else } |
或者,您可以将其压缩一点:
1 2 3 4 5 | if _, ok := m["Answer"]; ok { // do something } else { // do something else } |
我认为您试图不分配给
这是不可能的。但是,有一个短的手可用:
1 2 3 4 5 | if v, ok := m["Answer"]; ok { // Do something with `v` if set } else { // Do something if not set, v will be the nil value } |
如果您不关心值,但只关心它的设置,那么用
1 2 3 4 5 | if _, ok := m["Answer"]; ok { // Do something if set } else { // Do something if not set } |