Go笔记| 青训营笔记

88 阅读1分钟

Println :可以打印出字符串,和变量 Printf : 只可以打印出格式化的字符串,可以输出字符串类型的变量,不可以输出整形变量和整形 Print 输出会自动将括号中的内容转换成字符串输出,如果括号中是一个对象的话,就会自动调用toString() 方法。该输出方式不会换行

scanln:类似scan,但是遇到换行(回车)立马结束输入,如果要换行输入必须用多个scanln scanf:按照给定的格式依次读取数据(包括非法数据),不能换行输入(如果要换行需要在前面加一个scanln吸收掉回车符,就像c语言中的getchar) scan:比scanf高级,依次读取数据,遇到回车会忽略,可以换行输入(如果要先用了scan输入,再用scanf输入的话,需要在中间加一个scanln) Go调用协程: go 函数名(即可为函数创建协程来运行) func hello(i int) { println("hello gori: " + fmt.Sprint(i)) } func main() { for i := 0; i < 5; i++ { go func(j int) { hello(j) }(i) } time.Sleep(time.Second) } 通过通信共享内存实现通信

channel: 定义: make(chan 元素类型,[缓冲大小]) 无缓冲: make(chan 类型) 会导致发送与接收同步 有缓冲: make (chan 类型,缓冲大小)

并发安全: 使用lock

依赖管理: GOPATH(环境变量): bin 二进制文件 pack 编译时产生的中间文件 src 项目源码 弊端:无法实现package多版本控制

Go Vendor: 在项目目录下增加Vendor文件,通过引入一份依赖副本解决多个项目需同一package依赖的冲突问题 弊端: 无法控制依赖版本

Go Module: 通过go.mod文件管理依赖包版本,go get/go mod 指令工具管理依赖包,以实现定义版本规则和管理项目依赖关系 依赖管理三要素: 1.配置文件,描述依赖 go.mod 2.中心仓库管理依赖库 Proxy 3.本地工具 go get/go mod

pdqsort 一种不稳定的混合排序算法 小于24时采用插入排序,当最终pivot的位置离序列两端很接近(距离小于length/8,即快排时每次分得少),当这种情况次数到达limi(bits.Len(length)),时采用堆排序。 近似中位数,pivot选择:短序列(<=8),选固定元素;中序列(<=50),采样三个元素;长序列(>50),采样九个元素。