我刚刚注意到我们可以声明一个阴影变量,该变量的作用域为if/else
语句,如下所示
package main
import (
"fmt"
)
func main() {
num := 8
if num := 9; num < 0 {
fmt.Println(num, "is negative")
} else if num < 10 {
fmt.Println(num, "has 1 digit")
} else {
fmt.Println(num, "has multiple digits")
}
fmt.Println("num outside:",num)
}
现在我的问题是,我真的只能在if/else
语句中声明一个临时变量吗?
我在下面尝试了两种方式,但因命中错误而失败
//if num := 9; c := 10; num < 0 {..... //syntax error: c := 10 used as value
//if num := 9, c:= 10; num < 0 {..... //syntax error: unexpected :=, expecting semicolon or newline
为什么,Go 有元组赋值。尝试:
if num,c:=9,10; num<0 {
//whatever
}
现在我们已经到了,你应该注意到最优语句(;
之前的那个(可以不仅仅是赋值。写是合法的:
if fmt.Println("something"); num<10 {
}