我对Go中的语法用法感到困惑。
func f(){
m := map[int]string{1: "one", 2: "two"}
if x, ok := m[3]; !ok{
// do something
}
}
我了解if x, ok := map[3]
的作用,但是对于结尾处有; !ok
或; ok
之间的区别以及两者的含义感到困惑。
顺便说一句,如果我只写if x, ok := map[3]
而没有;
扩展它是否有效?
谢谢!
答案 0 :(得分:1)
顺便说一句,如果我只写
if x, ok := map[3]
而没有;
扩展它是否有效?
否,这是语法错误,因为x, ok := map[3]
不是布尔表达式。实际上,它甚至不是一个表达; a short variable declaration is a statement。因此它不能是控制if
的表达式。
但是我对结尾处有
; !ok
或; ok
之间的区别以及两者的含义感到困惑。
与任何if
相同。如果希望在ok
为true时运行块,请使用if ok
。如果希望在ok
为false时运行该块,请使用if !ok
。唯一的区别是,我们在单词ok
和测试之间放置了赋予if
值的语句。