多个变量声明与赋值同时进行
2022-09-01 09:37
Words count:
507
在 Go 语言里,同一个变量(即名字相同)在同一个作用域只能声明一次。同时 Go 语言支持用 1 个 "=" 同时声明多个变量。有时我们会看到,一个变量被“声明”了多次,程序依然正常工作,这是什么情况?
一个变量只声明一次
在 Go 语言里,同一个变量(即名字相同)在同一个作用域只能声明一次。如果声明 两次,就会编译错误:
// package and import statements omitted
func main() {
a := 1
a := 2
}
==”no new variables on left side of :=”==
学习这样的小知识点时咱们总是觉得很简单,可是有没有发现,当我们走到一些别的代码中,往往又会被搞晕?比如:
// package and import statements omitted
func main() {
var err error = nil
a, err := strconv.ParseFloat("23", 64)
if err != nil {
log.Fatal(err)
}
fmt.Println(a)
}
上面这段代码中,err 变量不是在 main 函数的第一行代码就声明了吗?为什么在第二行代码中再次声明它,结果却没有编译错误?
Head First Go1 这本书中给出了答案:
在多个变量的短变量声明中,只要其中有一个变量是之前没有声明过的,声明就是合法的。(在此之前已经被声明过的变量会被当作赋值来对待。)
所以上面代码中 main 函数第二句 a, err := strconv.ParseFloat("23", 64) 是合法的,因为 a 变量在这之前还没有被声明过。而已经被声明过的 err 变量会被当作赋值来对待。
-
Jay McGavren. Head First Go. Ed. Jeff Bleiel. Canada:O’Reilly Media, 2019. Electronic. ↩
0
times bought
•
0
times reward
0.0
Price(BTC)
0
Paid Times
$0.0
Revenue
0.0%
My Share(%)