变量这个词来源于数学,相似方程中的x、y,表明的是存储在计算机中的值。这里主要介绍Go和其它编程语言不同的地方,在前面咱们提到过,Go是一门静态语言。静态语言区别动态语言一个重要的特性就是变量的类型不可变,通常是在声明的时候就指定类型,以后就不可修改它的类型,而动态语言能够随时修改变量的类型。Go的变量能够在声明的时候不指定类型而是直接赋值,Go会自动根据值判断变量的类型,好比:编程
var i = 1
固然这时i
的类型(int
)也就肯定了以后不能修改i
的类型。
也能够声明的时候指定类型:编程语言
var i int
这里面的i
就是int
类型。若是变量声明的时候没有给定初始值,那默认就是零值,好比:函数
var i int var s string fmt.Println(i) fmt.Println(s)
输出是:指针
0
这里string的零值是""。bool类型的零值是false,之后讲到的指针类型零值是nilcode
:=
声明上面介绍过,Go能够在变量定义的时候比指定类型,系统自动判断类型,那声明的变量的时候加上var是否是感受有点多余了。Go能够用:=
这种写法直接声明变量例如:数学
i := 5 a := false
这时i
就是int
类型值为5
,a
就是bool
类型值为false
,须要注意的是它只能被用在函数中,不能全局的声明变量例如:string
package main import "fmt" i := 1 func main() { fmt.Println(i) }
这样是不行的。
还有就是相同的变量,在同一个代码块中只能这样被声明一次,第二次声明也是错误的例如:class
package main import "fmt" func main() { i := 1 i : = 2 fmt.Println(i) }
这样也会报错。import
多变量声明是指一次能够声明多个变量例如变量
var i, j, k int i, j, k = 0, 1, 2 var m, n = 1, 2 var a, b = 1, false
须要指出的是多个变量声明能够指定不通的类型例如上面 var a, b = 1, false
也支持:=
形式的多变量声明
a, b := 1, false
只要 :=
左侧出现了新的变量就能够例如:
a, b := 1, false b, c := false, 1