go 语言变量名由字符、数字、下划线组成,其中首字符不能为数字。其变量名命名规则和C/C++约定一样。

go 语言声明变量方式有三种,也可以简单说有2种,分别是关键字 var 和 :=

使用var关键字指定变量类型

1
var 变量名 类型

例如定义一个string 类型的name

var name string

也可以一次声明多个

1
var 变量名1 变量名2 变量名3 类型

例如定义一个 string 类型的name,mail, image

var name, mail, image string

使用var关键字不指定变量类型,通过初始化来让编译器默认推导

1
var name = value

例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
package main

import "fmt"

func main() {
	var name = "zhangsan"
	var age = 12
	fmt.Println(reflect.TypeOf(name))
	fmt.Println(reflect.TypeOf(age))
}

输出

1
2
string
int

var 声明name 变量直接初始化为字符串 “zhangsan” var 声明age 变量直接初始化为int 类型值为12

使用快速变量声明 :=

1
name := value

此种方法 省略 var, := 左侧如果不是新的变量名,就产生编译错误。而且此种声明方法只能在函数内使用,如果在函数外使用,将会出现编译错误。

同样根据初始化变量的类型,可以自动推导出变量name的类型

例如:

1
2
3
4
5
6
func main() {
	name := "zhangsan"
	age := 12
	fmt.Println(reflect.TypeOf(name))
	fmt.Println(reflect.TypeOf(age))
}

输出:

1
2
string
int

同样支持多种平行声明,上面的两行声明可以简写为一行

1
name,age := "zhangsan", 12

总结:

var name type 此种声明可以不用初始化,而var name = valuename := value 必须初始化从而自动推导出name的类型, 而且 var name = valuename := value 方式支持平行不同类型变量声明 而var name type 方式不支持平行多种不同类型声明。并且 := 的方式只能在函数内使用