![e89cc36853859eb28d734a69bda255bb.png](https://i-blog.csdnimg.cn/blog_migrate/a9a91c561f4363104132142ee889ea63.jpeg)
go 语言变量名由字符、数字、下划线组成,其中首字符不能为数字。其变量名命名规则和C/C++约定一样。
go 语言声明变量方式有三种,也可以简单说有2种,分别是关键字 var 和 :=
使用var关键字指定变量类型
var 变量名 类型
例如定义一个string 类型的name
var name string
也可以一次声明多个
var 变量名1 变量名2 变量名3 类型
例如定义一个 string 类型的name,mail, image
var name, mail, image string
使用var关键字不指定变量类型,通过初始化来让编译器默认推导
var name = value
例如:
package main
import "fmt"
func main() {
var name = "zhangsan"
var age = 12
fmt.Println(reflect.TypeOf(name))
fmt.Println(reflect.TypeOf(age))
}
输出
string
int
var 声明name 变量直接初始化为字符串 "zhangsan" var 声明age 变量直接初始化为int 类型值为12
使用快速变量声明 :=
name := value
此种方法 省略 var, := 左侧如果不是新的变量名,就产生编译错误。而且此种声明方法只能在函数内使用,如果在函数外使用,将会出现编译错误。
同样根据初始化变量的类型,可以自动推导出变量name的类型
例如:
func main() {
name := "zhangsan"
age := 12
fmt.Println(reflect.TypeOf(name))
fmt.Println(reflect.TypeOf(age))
}
输出:
string
int
同样支持多种平行声明,上面的两行声明可以简写为一行
name,age := "zhangsan", 12
总结:
var name type 此种声明可以不用初始化,而var name = value 和 name := value 必须初始化从而自动推导出name的类型, 而且 var name = value 和 name := value 方式支持平行不同类型变量声明 而var name type 方式不支持平行多种不同类型声明。并且 := 的方式只能在函数内使用。