在Go中变量声明后就分配了内存,这是确定无疑的。

但是否可直接用,还要看看下面两个因素:

  1. 如果变量是零值,那么零值是否能直接用?
  2. 变量值的意义是否符合业务逻辑要求。

变量声明有两种形式:一种是声明时未显式赋值的,Go编译器会为之赋予零值。

比如:

有些变量的零值可直接用,比如上面的a、s、mu,而切片变量b仅可以经由append使用,而不能像这样直接使用:

上面的变量mu便是标准库定义的“零值可用”类型。更多关于定义“零值可用”的内容,可参考这篇专栏文章:

对于那些零值含义并不符合业务需求的,我们需要在声明时对其显式赋值(赋予满足业务需求的值),这样声明后才算可直接使用: