这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天
课程大纲
- 语言进阶
- 依赖管理
- 测试
- 实战
语言进阶
goroutine 是由go语言官方实现的"线程池", goroutine的概念类似于线程协程,但 goroutine是由Go的运行时(runtime)调度和管理的。Go程序会智能地将 goroutine 中的任务合理地分配给每个CPU。Go语言之所以被称为现代化的编程语言,就是因为它在语言层面已经内置了调度和上下文切换的机制。,每个只有4~5KB的栈内存占用和由于实现机制而大幅减少的创建和销毁开销是go高并发的根本原因。启动goroutine的方式非常简单,只需要在调用的函数(普通函数和匿名函数)前面加上一个go关键字。
依赖管理
Go mod是go默认的包管理工具,模块是指一组相关的包,类似maven的包管理,在go.mod文件中,描述模块的依赖信息。模块中的包是一些在相同目录中的go源码文件,包也有自己的标识/路径,由module path和包所在的目录组成.
测试
go test命令可以执行以_test.go为后缀名的源文件,以_test.go为后缀名的源文件在执行go build时不会被构建成包的一部分,它们是go test测试的一部分。在*_test.go文件中,有三种类型的函数:测试函数、基准测试(benchmark)函数、示例函数。基准测试函数是以Benchmark为函数名前缀的函数,它们用于衡量一些函数的性能;
用-coverprofile标志参数可以生成覆盖率参数,在Go语言中,基准测试函数和普通测试函数写法类似,但是以Benchmark为前缀名.还提供了一个整数N,用于指定操作执行的循环次数。示例函数以Example为函数名开头,没有函数参数和返回值。