根据Go参考,有两种声明变量的方法
Variable_declarations(格式为var count = 0或var count int)
和
Short_variable_declarations(格式为count := 0)
我发现决定使用哪一个是非常令人困惑的.
我所知道的差异(到现在为止)是:
count := 0在函数范围内使用格式.count := 0可以 在多变量简短声明中重新声明.但就我所知,他们的行为确实相同.在参考文献中它还说:
它(
count:=0方式)是具有初始化表达式但没有类型的常规变量声明的简写
我的困惑是:
考虑以下示例来说明问题(它只是为了解释问题而构建的,但我在书中看到了类似的代码以及实际项目中的代码):
package main
import (
"strconv"
"fmt"
"log"
)
func main() {
n1, err := strconv.Atoi("1")
if err != nil {
log.Panicf("%v", err)
}
n2, err := strconv.Atoi("2")
if err != nil {
log.Panicf("%v", err)
}
// err := fmt.Errorf("new error") <- line 1
// n1, err := strconv.Atoi("3") <- line 2
fmt.Printf("n1 = %d, n2 = %d\n", n1, n2)
}
Run Code Online (Sandbox Code Playgroud)
编译器不抱怨的重新定义err,但如果我取消<- line 1或者<- line 2,它会抱怨no new variable on left side of := …