我刚刚注意到我们可以在以下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
答案 0 :(得分:3)
为什么,Go有元组分配。试试:
if num,c:=9,10; num<0 {
//whatever
}
现在我们要解决的是,您应该注意,最佳语句(;
之前的语句)可以不仅仅是赋值。书写是合法的:
if fmt.Println("something"); num<10 {
}