变量声明
在Go中,变量是包含值的一块存储。可以使用变量声明为变量命名。只需使用var关键字,后跟所需的名称以及变量将保存的值的类型。
一旦你声明了一个变量,就可以用=为它分配该类型的任何值:
quantity = 2
customerName = "xiaoming"
还可以在同一语句中为多个变量赋值。只需将多个变量名放在=的左侧,将相同数量的值放在右侧,并使用逗号分隔。
quantity, customerName = 3, "xiaoli"
一旦给变量赋了值,你就可以在任何要使用原始值的上下文中使用它们。
声明变量省略类型
如果你事先知道变量的值是什么,你可以声明变量并在同一行赋值:
你可以为现有变量分配新值,但它们必须是相同类型的值。Go的静态类型确保你不会意外地将错误类型的值赋给变量。
如果在声明变量的同时为其赋值,通常可以在声明中省略变量类型。这个分配给变量的值的类型将用作该变量的类型
短变量声明
如果你声明变量时就知道它的初始值是什么,那么更具有代表性的是使用短变量声明。你不必很明确地声明变量的类型并在之后使用=为其赋值,而是同时使用:=
不需要明确地声明变量的类型,赋给变量的值的类型成为该变量的类型。
当同一个变量名在同一作用域中被声明两次时,我们会得到一个编译错误:
但是,只要短变量声明中至少有一个变量名是新的,这是允许的。新变量名被视为声明,而现有的名字被视为赋值。
这种特殊处理是有原因的:许多Go函数返回多个值。如果仅仅因为要重用其中一个变量而必须分别声明所有变量,那将是一件痛苦的事情。
相反,Go允许你对所有事物使用短变量声明,即使对其中一个变量来说,它实际上是赋值。
由于短变量声明非常方便和简洁,因此它们比常规声明更常用。不过,你仍然会偶尔看到这两种形式,因此熟悉这两种形式很重要。