go 语言中提供了 var
语句支持变量声明,在包含初始化的时候编译器可以根据默认类型进行自动推导。go 语言还提供了更加简洁的声明语法 :=
。
通过这些不同的方式都可以用来声明变量,但我们在编码时应该尽可能使用规范的风格。
下面是Dave 大神提到的最佳实践:
最佳实践
-
声明变量后将稍后再初始化时,请使用
var
语句。变量被声明为指定类型的零值。 -
声明变量时同时初始化,请使用
:=
语句。清楚的表示左侧的变量是初始化过的。
当然也会有例外:
任何经验法则,都有例外。
有时两个变量密切相关,这样写会很奇怪:
var min int
max := 1000
像下面这样声明会更具可读性:
min, max := 0, 1000
还有一个例子,
var length uint32 = 0x80
这里使用了 var
同时进行了初始化,这样做是为了强调变量 length
会具有特殊含义,看起来更加显眼。
总之,按照一定风格编码,会使得程序更具可读性。
一些注意事项
_
(下划线),是一个特殊的变量,在声明和赋值时有特殊的含义,叫做空标识符。任何赋给它的值都会被丢弃。
value, _ := strconv.Atoi("123") // 丢弃strconv.Atoi()的另一个返回值error
go 语言对于已声明但未使用的变量会在编译阶段报错。
// 如果 i 只声明而没有使用,编译时会提示错误:i declared and not used
var i int
go 语言中的自动推断类型并不是任何时候都适用的。
nil
虽然是指针和引用类型的零值,但是并没有对应的默认类型。
var p = nil // 编译错误,use of untyped nil
参考资源: