这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天
一、本堂课重点内容:
- 本堂课的知识要点有哪些?
- 并发编程
- 依赖管理
- 单元测试
- 项目实战
二、详细知识点介绍:
本堂课介绍了哪些知识点?
并发编程
-
协程Goroutine
Go 语言内置了 goroutine 机制,使用goroutine可以快速地开发并发程序, 更好的利用多核处理器资源。
-
通道Channel
通道就是goroutine之间的通道。它可以让goroutine之间相互通信。
每个通道都有与其相关的类型。该类型是通道允许传输的数据类型。
-
锁Lock pkg.go.dev/sync
Go语言包中的 sync 包提供了两种锁类型:sync.Mutex 和 sync.RWMutex。
Mutex 是互斥锁,当一个 goroutine 获得了 Mutex 后,其他 goroutine 就只等到这个 goroutine 释放该 Mutex。
每个资源都对应于一个可称为 “互斥锁” 的标记,这个标记用来保证在任意时刻,只能有一个协程(线程)访问该资源。其它的协程只能等待。
-
线程同步WaitGroup pkg.go.dev/sync
-
依赖管理
-
Gopath
-
Go Vendor
-
Go Module : go.dev/blog/using-…
了解Go依赖管理演进的历程,通过课程学习以及课后实践能能够熟练使用go module 管理依赖。
GOPATH 模式
所有工程代码要求放在GOPATH/src目录下`
工程本身也将作为一个依赖包,可以被其它 GOPATH/src 目录下的工程引用
在 $GOPATH/src 下进行 .go 文件或源代码的存储,我们可以称其为 GOPATH 的模式
vendor 特性/模式 (三方)
解决 GOPATH模式 所有项目都在$GOPATH/src目录的问题
可以随处可以创建项目,不用扎堆 src 目录下
Go Modules 模式(模块感知模式)
- GOMODULE模式下所有依赖的包存放在$GOPATH/pkg/mod目录下
- 项目中需要有go.mod文件,来应用$GOPATH/pkg/mod
单元测试
- 单元测试概念和规则:go.dev/doc/tutoria…
- Mock测试:github.com/bouk/monkey
- 基准测试:pkg.go.dev/testing#hdr…
三、实践练习例子:
有什么实践举例帮助理解知识点?
社区话题页面需求描述
- 展示话题(标题,文字描述)和回帖列表
- 暂时不考虑前端页面实现,仅仅实现一个本地web服务
- 话题和回帖数据用文件存储
Moonlight-Zhao/go-project-example at V0 (github.com)
四、课后个人总结:
- 本章有什么知识点不容易掌握?
- 什么地方容易与其他内容混淆?
五、引用参考:
- 我参考了哪些外部博客/笔记/文章?
- 文章中有什么地方是我参考引用了外部博客/笔记/文章的?