Go 变量
名称
Go中的函数、变量、常量、类型、语句标签和包的名称都必须以字母(Unicode中的字符即可)或者下划线开头,后面可以跟任意数量的字符、数字和下划线,并区分大小写
Go有25个关键字,只能用在语法允许的地方,不能作为名称使用
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
还有三十几个内置的预声明的常量、类型和函数:
常量:true false iota nil
类型:int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr float32 float64 complex64 complex128 bool byte rune string error
函数:make len cap new append copy close delete complex real imag panic recover
由于这些名称不是预留的,所以可以对其中的名称进行重声明,但是这会产生冲突的风险
如下代码对new进行了重声明,并且可以正常运行:
变量声明和赋值
声明
类型和表达式部分可以省略一个,但不能都省略
如果省略类型,它的类型将由初始化表达式决定
如果省略表达式,初始化值取对应类型的零值
数字:
0布尔:
false字符串:
""接口及引用类型:
nil数组或结构体等复合类型,零值就是所有元素或成员的零值
可以一次性声明多个变量,忽略类型可以同时声明不同类型的变量
短变量声明
在函数中,一种称为短变量声明的可选形式,可以用来声明和初始化局部变量
var 声明通常是为那些跟初始化表达式类型不一致的局部变量保留的,或者用于后面才会对变量赋值以及变量初始值不重要的情况
赋值
最简单的形式是由赋值符=以及符号左边的变量和符号右边的表达式组成
赋值规则:类型必须精准匹配,nil 可以被赋给任何借口变量或引用类型
变量的生命周期
包级别变量的生命周期是整个程序的执行时间
局部变量的声明周期从声明一个变量开始到它变得不可访问
变量的作用域
语法块是由大括号围起来的一个语句序列,在语法块中声明的变量对该语法块的外部不可见
评论