Go中的简短声明
我正在学习 Go,但我不明白代码如何允许我重新声明相同的变量“ phones ”。我认为你只能在函数作用域内简短地声明一个变量,然后只有在用它声明一个新变量时才能重新声明该变量。但是使用下面的代码,我可以短声明“ phones ”两次,而无需在第二个短声明语句中声明新变量。
package main
import "fmt"
func main() {
phones := map[string]string{
"bowen": "202-555-0179",
"dulin": "03.37.77.63.06",
"greco": "03489940240",
}
multiPhones := map[string][]string{
"bowen": {"202-555-0179"},
"dulin": {"03.37.77.63.06", "03.37.70.50.05", "02.20.40.10.04"},
"greco": {"03489940240", "03489900120"},
}
fmt.Println(phones)
who, phone := "greco", "N/A"
if phones := multiPhones[who]; len(phones) >= 2 {
fmt.Println(phones)
phone = phones[1]
}
fmt.Printf("%s's 2nd phone number: %sn", who, phone)
}
回答
我以为你只能在函数作用域内简短地声明一个变量
不,这是错误的。Go 是块作用域,而不是函数作用域。每个变量可以在每个 块中声明一次并if开始一个新块。
(请注意,这适用于任何类型的声明,无论是短的还是长的。)