Go 为什么使用简写语法来声明/init变量?
这两种类型的变量声明/初始化之间有区别吗Go 为什么使用简写语法来声明/init变量?,go,Go,这两种类型的变量声明/初始化之间有区别吗 package main import "fmt" func main() { var a = "I am a string" // Declare + init (infer) fmt.Println(a) b := "I am a string" // Declare + init (shorthand) fmt.Println(b) } 我看不到速记语法的附加值,倾向于在整
package main
import "fmt"
func main() {
var a = "I am a string" // Declare + init (infer)
fmt.Println(a)
b := "I am a string" // Declare + init (shorthand)
fmt.Println(b)
}
我看不到速记语法的附加值,倾向于在整个代码中使用var语句以保持一致性。我只在必要时使用var,例如: 1全局变量 2如果陈述如下:
var err error
if x == nil {
err = errors.New("x is nil")
} else if y == nil {
err = errors.New("y is nil")
}
…我总是尝试使用:=语法。当您需要重构代码时,好处是巨大的
您没有将变量的名称绑定到任何特定类型,并且每当您更改右侧的类型时,该变量都会自动推断出新类型。我更喜欢第一个类型:3只是个人观点,两者都做同样的工作。然而,gofmt或go团队定义您使用速记语法而不是推断语法。由于这是惯例,我建议这样做。在定义全局变量时,您将被迫使用var。