1.标识符与关键字
1.1 标识符
- 标识符就是程序员定义的具有特殊含义的词。(变量名、常量名、函数名等)
- Go语言中标识符由数字字母下划线构成。
1.2 关键字
- 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
- Go语言中有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```
2.变量
- 思考为什么需要变量?
- 思考变量为什么需要定义类型?
2.1 变量声明
- Go语言中变量需要声明后才能使用
- 同一作用域内不支持重复声明变量
- Go语言中函数内声明的变量必须要使用
//Go语言变量声明格式
var 变量名 变量类型
var name string
// 批量声明变量
var (
name string
age int
isBoy bool
)
2.2 变量的初始化
Go语言在声明变量的时候,会自动给变量对应的内存区域进行初始化操作。每个被声明的变量都会被初始化一个默认的值
- 整形与浮点型变量默认值为
0
- 字符串变量的默认值为
空字符串
- 布尔类型变量默认为
false
- 切片、函数、指针变量的默认值为
nil
2.2.1 标准声明
// 我们在声明变量的时候也可以初始化值
var 变量名 类型 = 初始化值
var name string = "spl"
var age int = 18
2.2.2 类型推导(声明变量的时候省略类型)
var name = "spl"
var age = 18
// 也可以同时声明并初始化多个值
var name ,age = 'spl',18
2.2.3 短变量声明(必须在函数内部)
package main
import "fmt"
func main(){
name := "spl"
age := 18
fmt.Println(name,age)
}
2.2.4 匿名变量
在进行变量赋值操作时,遇到不需要的值,将这个值赋值给_
- 匿名变量不会被分配内存
- 匿名变量可以进行重复声明
func getMsg()(int,string){
return 18,"spl"
}
func main(){
a,_ := getMsg() // 获取年龄,舍弃姓名
_,b := getMsg() // 舍弃年龄,获取姓名
...
}
2.3 注意事项
- 函数外的每个语句都需要一关键字开始(var,const,func等等)
:=
只能在函数内部使用_
用于占位符,表示忽略某值
3.常量
- 恒定不变的量,程序运行周期不会改变的值。
- 关键字
const
声明与初始化参考变量
3.1 常量注意点
const (
n1 = 100
n2
n3
)
// n1,n2,n3 的值都是100
4. iota
iota
Go语言的常量计数器,只能在常量表达式中使用iota
在const关键字出现的时候被重置为0
。const中酶新增一行常量声明将iota
计数一次。
const(
n1 = iota // 0
n2 // 1
n3 // 2
n4 // 3
)
4.1 iota面试考点
- 使用
_
跳过某个值
const (
n1 = iota // 0
n2 // 1
_
n4 // 3
)
- iota 声明中间插队
const(
n1 = iota // 0
n2 = 100 // 100
n3 = iota // 2
n4 // 3
)
- 定义数量级
const (
_ = iota
KB = 1 << (10 * iota)
MB = 1 << (10 * iota)
GB = 1 << (10 * iota)
TB = 1 << (10 * iota)
PB = 1 << (10 * iota)
)
- 多个iota定义在同一行
const (
a,b = iota+1,iota+2 // 1,2
c,d // 2,3
e,f // 3,4
)