go中常见的变量声明方式
Go
var a int32
var s string
var i = 13
n := 17
var (
crlf = []byte("\r\n")
colonSpace = []byte(": ")
)
go中的变量分为2种:
1.包级变量:在package级别可见的变量,如果是导出的变量,也叫全局变量
2.局部变量:在函数和方法体内声明的变量,仅在函数和方法体内可见
1.包级变量的声明
包级变量只能使用var关键字进行声明,但是可以 声明并初始化 和 声明但延迟初始化
声明并初始化
如下所示,声明变量的同时也初始化变量,可以指定类型,也可以不指定类型,依赖编译器自动推断。
Go
var x1 = 1
var x2 int = 1
var x3 = int(1)
声明但延迟初始化
如下所示,声明变量,但是并不做初始化,此时需要指定变量的类型,这也说明了go是强类型的静态语言,虽然这里没有初始化,但是go中有"零值可用"的概念,即y1和y2的值是对应类型的初始值,int就是0,bool就是false
Go
var y1 int
var y2 int
声明聚类
将多个声明语句放到一个var块中
Go
var (
z1 = 1
z2 int = 2
z3 = int(3)
)
2.局部变量的声明
局部变量在函数和方法内定义并可见,声明方式也分为2种,声明并初始化 和 声明但延迟初始化
声明但延迟初始化
下面展示了声明但延迟初始化,定义了m1没有初始化时,m1的值就是int的零值
Go
func main() {
// 2.1 延迟初始化
var m1 int
fmt.Printf("m1 = %v\n", m1)
m1 = 128
fmt.Printf("m1 = %v\n", m1)
}
声明并初始化
下面展示了声明并初始化,使用短声明方式定义,这是比较建议的声明并初始化方式,也可以使用var声明和初始化使用
Go
m2 := 1
m3 := float64(3.14)
fmt.Printf("m2 = %v, m3 = %v\n", m2, m3)
声明聚类
同样的,对于局部变量,在函数和方法内部,也可以通过var块将一组变量声明放在一起