内置类型
1、值类型
bool
int(32 or 64), int8, int16, int32, int64
uint(32 or 64), uint8(byte), uint16, uint32, uint64
float32, float64
string
complex64, complex128
array
2、引用类型(也称:值类型)
slice -- 序列数组(最常用)
map -- 映射
chan -- 管道
内置函数
append 用来追加元素到数组、slice中,返回修改后的数组、slice
close 主要用来关闭channel
delete 从map中删除key对应的value
panic 停止常规的goroutine (panic和recover:用来做错误处理)
recover 允许程序定义goroutine的panic动作
imag 返回complex的实部 (complex、real imag:用于创建和操作复数)
real 返回complex的虚部
make 用来分配内存,返回Type本身(只能应用于slice, map, channel)
new 用来分配内存,主要用来分配值类型,比如int、struct。返回指向Type的指针
cap capacity是容量的意思,用于返回某个类型的最大容量(只能用于切片和 map)
copy 用于复制和连接slice,返回复制的数目
len 来求长度,比如string、array、slice、map、channel ,返回长度
print、println 底层打印函数,在部署环境中建议使用 fmt 包
Init函数
go
语言中的函数 init
,它可以在所有程序执行开始前被执行,并且每个 package
下面可以存在多个 init
函数。
1、init特征
1 init函数是用于程序执行前做包的初始化的函数。
2 每个包可以拥有多个init函数
3 包的每个源文件也可以拥有多个init函数
4 init 函数没有输入参数,返回值,也没有声明,无法引用
5 不同包的init函数按照包导入的依赖关系决定该初始化函数的执行顺序
6 init函数不能被其他函数调用,而是在main函数执行之前,自动被调用
7 无论包被导入多少次,init 函数只会执行一次
2、init函数加载顺序
1)优先级最高的是 package
加载,先层层递归进行包加载
2)每个包中的加载顺序是:const
-> var
-> init
3、package 中多个 init 的执行顺序
1)如果当前包下有多个 init
函数,首先按照源文件名的字典序从前往后执行
2)若一个文件中出现多个 init
函数,则按照出现顺序从前往后进行执行
4、加载顺序总结
从当前包开始,如果当前包 import 了多个依赖包,先加载依赖包,层层递归初始化各个包,
在每一个包中,按照源文件的字典序从前往后执行,每一个源文件中, 优先初始化常量,变量,最后是 init 函数,当出现多个 init 函数时,则按照出现的顺序从前往后一次执行,每一个包都初始化完成后,递归返回,初始化当前包。
main函数
Go语言程序的默认入口函数(主函数):func main()
package main
func main(){
//函数体
}