Go语言进阶 | 青训营笔记

15 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第2天,今天老师主要围绕了Go语言并发编程、Go依赖管理、Go工程测试等几个方面的内容来讲授知识,让我们对Go语言的深层应用有了一定的了解。

课堂内容

一、Go语言并发编程

Go给我们提供了强大的并发编程工具——goroutine,即协程,协程区别于运行在内核态的线程,是一种可以运行在用户态的轻量级线程,协程的开启也很简单,只需要在函数前面加上go关键字即可开启一个协程。
既然是并发编程便离不开协程间通信,Go为我们提供了两种通信方式,既可以通过channel进行通信,也可以使用常用的共享内存进行通信,要在Go程序中开启一个channel,只需要输入以下代码src := make(chan int)即可,使用src := make(chan int,3)可以开启一个具有3个缓冲区的channel。
并发编程离不开安全问题,Go同样为我们提供了锁机制,通过var lock sync.Mutex可以声明一个互斥锁用于保护临界区资源。

二、依赖管理

正如Java提供了Maven等依赖管理工具,当前Go使用的主流依赖管理工具为go modulego module通过go.mod文件管理依赖包版本,通过go get/go mod指令工具管理依赖包,一个基础的go.mod依赖管理文件如下图所示

三、测试

测试是项目进程中极为重要的一环,没有一个好的测试就不会有一个安全稳定的项目,严重者甚至会导致公司的巨大损失。测试一般分为回归测试、集成测试、单元测试三种类型。
单元测试主要包括输入、测试单元、输出以及校对,包括对单个函数的测试、单个模块的测试、单个业务的测试等,将测试结果与期望进行校对,来保证代码的质量。通过大量的单元测试(增大源代码测试覆盖率),可以保证新功能的正确性,以及对各种bug的及时修复。
单元测试包含以下几个规则:
1.所有的测试代码文件以_test.go结尾;
2.定义测试函数func TestXxx(t *testing.T)
3.初始化逻辑放到TestMain中。