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的存在。那些看不见的人一定是文盲或盲人。