变量和常量的声明
Go语言主要有四种类型的声明语句:var、const、type和func,分别对应变量、常量、类型和函数实体对象的声明。
一个Go语言编写的程序对应一个或多个以.go为文件后缀名的源文件。
每个源文件中以包的声明语句开始,说明该源文件是属于哪个包。
包声明语句之后是import语句导入依赖的其它包,然后是包一级的类型、变量、常量、函数的声明语句,包一级的各种类型的声明语句的顺序无关紧要
函数内部的名字则必须先声明之后才能使用。
命名
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
37个保留字:
Constants: true false iota nil
Types: int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64 complex128 complex64
bool byte rune string error
Functions: make len cap new append copy close delete
complex real imag
panic recover
在习惯上,Go语言程序员推荐使用 驼峰式 命名,当名字由几个单词组成时优先使用大小写分隔,而不是优先用下划线分隔。
变量声明
常见变量的数据类型有:整型、浮点型、布尔型等。
Go中没有专门的字符类型,如果要存储单个字符(字母),一般使用byte来保存。
Go语言中的每一个变量都有自己的类型,并且变量必须经过声明才能开始使用,而且声明后必须使用。
标准声明
关键字 var
开头,变量类型放在变量的后面,行尾无需分号。
var intA int = 100
var floatA float32 = 100.10
批量声明
var (
a int = 100
b bool = true
c float32 = 20.2
)
类型推导
即声明时初始化,可以推导出类型
var intA = 100
var floatA = 100.10
简短声明
在函数内部,可以使用更简略的 := 方式声明并初始化变量。
func main() {
a := 100
b := 200
fmt.Println(a, b)
}
tip
:=
不能使用在函数外。
函数外的每个语句都必须以关键字开始(var、const、func等)
变量初始化
Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。
每个变量会被初始化成其类型的默认值,例如:
- 整型和浮点型变量的默认值为
0
。 - 字符串变量的默认值为
空字符串
。 - 布尔型变量默认为
false
。 - 切片、函数、指针变量的默认为
nil
。
匿名变量
在使用多重赋值时,如果想要忽略某个值,可以使用 匿名变量(anonymous variable)
。
匿名变量用一个下划线 _
表示,例如:
func foo() (int, string) {
return 10, "Q1mi"
}
func main() {
x, _ := foo()
_, y := foo()
fmt.Println("x=", x)
fmt.Println("y=", y)
}
匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。
常量声明
常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值。
使用 const
声明常量 ,常量在定义的时候必须赋值。
const pi = 3.1415
const e = 2.7182
// 或
const (
pi = 3.1415
e = 2.7182
)
const同时声明多个常量时,如果省略了值则表示和上面一行的值相同。
例如:
const (
n1 = 100
n2
n3
)
iota
iota
是go语言的常量计数器,只能在常量的表达式中使用。
iota
在const关键字出现时将被重置为0。
const中每新增一行常量声明将使 iota
计数一次
const (
n1 = iota //0
n2 //1
n3 //2
n4 //3
)