Go 变量声明指南

golang var、:=、new、make区别及使用 ​ go里面的几大变量“类型”(不严谨,只是个人在使用的时候常用到的结构的一个划分) (1) 值类型: int, string, struct 等 (2) 引用类型:主要是 map, slice,chan 这三个引用(make创建内存的) (3)指针类型:*int64, *struct等 var vs := ​ 对于值类型的变量,我们通过var 声明(包括结构体),系统会默认为他分配内存空间,并赋该类型的零值。 如下,我们声明一个int类型变量i,输出为0。 1 2 var i int fmt.Println(i) // i = 0 (类型零值) var和:=之间实际上存在差异,采用:=允许重新声明变量。 与常规变量声明不同,:=声明可以重新声明变量,前提是它们最初在同一块中以相同类型声明,并且至少有一个非空白变量是新的。因此,重新声明只能出现在多变量短声明中。 重新声明不引入新变量;它只是为原始值分配一个新值。 1 2 3 4 field1, offset := nextField(str, 0) field2, offset := nextField(str, offset) // 重新声明偏移量(可重入) a, a := 1, 2 // 非法:如果在别处声明了 a,则双重声明 a 或没有新变量 所以我会说:=运算符不是纯粹的声明,而是更像声明和分配。不允许在顶层重新声明,因此也不允许短声明。另一个原因可能是语法简单。type在 Go 中,所有顶级表单都以var 或 func 开头。 建议:重复声明的变量用 :=,比如 err 的声明,使用的值或全局变量(不推荐大量使用)用 var, 如 var fields []string ...

3 min · 1291 words · Luenci