3.4.6 变量声明和赋值的简化形式

前面对变量进行声明和赋值的例子中,我们使用的都是和其他“强类型”语言中类似的方法,即“先声明,再赋值”。实际上Go语言在这方面做了一定的改进,可以更方便地实现这两步的功能,方法就是使用“:=”这个操作符,如代码3-15所示。

package main

import (
  "fmt"
)

func main() {
  var a float64

  a = 8.8

  b := 10.1

  fmt.P rintln(a + b)
}

代码3-15 用“:=”操作符简化变量的声明和赋值

代码3-15中,我们按常规方式先定义了一个float64类型的变量a并将其赋值为8.8,然后用b:= 10.1这条语句直接将10.1这个浮点数赋值给了b。使用“:=”操作符,无须先声明变量的类型,Go语言的编译器会自动根据所赋的值来确定变量的类型。本条语句的效果与下面的代码是一样的。

var  b float64
b = 10.1

对于“:=”操作符后面是浮点数值的情况,Go语言会自动将变量b确定为float64类型,并将所赋的值存入。Go语言中,把用“:=”操作符声明变量同时对其赋予初始值的操作称作“简化变量声明”(short variable declaration)或“简化声明”。

运行代码3-15,得到图3.25所示的结果,可以发现结果是正确的,因为Go语言中,不同类型的值不可以相加,只有相同的变量类型才可以进行相加计算,因此变量a和b都是float64类型,说明简化变量声明的结果是正确的。

图3.25 简化变量声明和赋值程序的执行结果

由此类推,下面给出几种类型的变量用简化声明形式来定义的示例。

  x := 8

  y := 10.1

  t := "abc"

  b := true

  b1 := false

其中,变量x是int类型,y是float64类型,t是字符串类型,b和b1都是bool类型。