Go 将项测试映射为表达式

Go 将项测试映射为表达式,go,Go,围棋教程介绍了如何测试地图中是否存在密钥: 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 } 有没有一种方法可以在没有赋值、表达式方式的情况下对其进行测试,类似于: if m["Answer"] IS NOT NULL { Do Something if set } if m["Answ

围棋教程介绍了如何测试地图中是否存在密钥:

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 }
有没有一种方法可以在没有赋值、表达式方式的情况下对其进行测试,类似于:

if m["Answer"] IS NOT NULL  { Do Something if set }
if m["Answer"] IS NULL  { Do Something if not set }


我认为您试图不分配
v
ok
变量

这是不可能的。但是,有一个可用的速记:

if v, ok := m["Answer"]; ok {
    // Do something with `v` if set
} else {
    // Do something if not set, v will be the nil value
}
如果您不关心该值,而只关心该值是否已设置,请将
v
替换为

if _, ok := m["Answer"]; ok {
    // Do something if set
} else {
    // Do something if not set
}

我认为您试图不分配
v
ok
变量

这是不可能的。但是,有一个可用的速记:

if v, ok := m["Answer"]; ok {
    // Do something with `v` if set
} else {
    // Do something if not set, v will be the nil value
}
如果您不关心该值,而只关心该值是否已设置,请将
v
替换为

if _, ok := m["Answer"]; ok {
    // Do something if set
} else {
    // Do something if not set
}

如果不想存储值,可以使用
\uu
作为占位符

例如

或者,你可以把它浓缩一点:

if _, ok := m["Answer"]; ok {
  // do something
} else {
  // do something else
}

如果不想存储值,可以使用
\uu
作为占位符

例如

或者,你可以把它浓缩一点:

if _, ok := m["Answer"]; ok {
  // do something
} else {
  // do something else
}

@Flimzy我需要一些东西,如果和打开{我已经投票重新打开了。这显然是不同的问题。你可以在问题中看到,他知道
值,存在:=m[“key”]
表达式,这个问题不是问它。他问的是如何在没有分配的情况下检查钥匙的存在。看不见的人一定是文盲或盲人。@Flimzy我需要一些东西,你可以在
if
和打开
之间放置{
我投票决定重新打开。这显然是一个不同的问题。你可以在问题中看到,他知道
值,存在:=m[“key”]
表达式,这个问题不是问它。他问的是如何在没有赋值的情况下检查一个key的存在。那些看不见的人一定是文盲或盲人。