今天给大家介绍一个Go培训的课程资料仓库gotraining[1],官网在这ardanlabs[2],想必很多gopher也知道这个网站。ardanlabs-blog[3]也有很多优质的教学文章和系列教程。文章列表在这儿https://www.ardanlabs.com/all-posts/,大家感兴趣的话可以订阅学习,强烈建议大家过一下这里的知识点。
由于内容较多,限于篇幅,这里主要给大家介绍下仓库的主要目录介绍。后续会针对某些章节做一些翻译和输出。
├── algorithms
├── concurrency
├── design
├── exercises
├── generics
├── language
├── packages
├── profiling
└── testing
algorithms
https://github.com/ardanlabs/gotraining/tree/master/topics/go/algorithms
algorithms目录的话主要介绍的是算法数据结构相关的例子,比如:
go/algorithms/fun
包含一些设计的代码,比如pub/sub的简单设计代码go/algorithms/simulations
模拟解决日常一些问题的代码go/algorithms/data
主要是hash、链表、队列、栈、树的一些例子go/algorithms/strings
包括字符串反转、回文、对比的简单例子
concurrency
https://github.com/ardanlabs/gotraining/tree/master/topics/go/concurrency
这里主要介绍并发相关的知识点,包括channel、goroutine的运用。
channels主要介绍了channel的设计原则、一些练习,
goroutines主要讲解了Go调度原理、并发设计和一些例子使用
data race主要介绍了数据竞争的一些case,包括原子增量、互斥锁、读写锁和map数据竞争的例子
concurrency Patterns 这个目录主要讲Go并发模式。还有chat、logger、task、pooling、kit等优秀代码的review
Concurrency patterns:https://github.com/gobridge/concurrency-patterns
Functional Options:代码可见https://github.com/grpc/grpc-go/blob/master/clientconn.go
design
https://github.com/ardanlabs/gotraining/tree/master/topics/go/design
composition:主要讲解了接口与组合的设计,还有一些关于解耦、分组、 mock数据、接口污染转换和断言的代码review。
error_handling:这个目录包括了错误处理设计的讲解,有很多好的error处理的案例,比如:如何使用
github.com/pkg/errors
和标准库去wrap 错误,packaging:主要讲述了Go中的包如何去设计,遵循哪些设计哲学。工程项目结构应该是什么样的。
exercises
https://github.com/ardanlabs/gotraining/tree/master/topics/go/exercises
这个目录主要编写一些程序来锻炼你的Go技能。这些练习的目的是涵盖各种各样的主题,每一个都是一个完整的程序与实际应用。
generics
https://github.com/ardanlabs/gotraining/tree/master/topics/go/generics
这是用于展示关于Go泛型的一些例子。随着提案变动和泛型实现的变动,这块代码可能会停更和更新。
language
https://github.com/ardanlabs/gotraining/tree/master/topics/go/language
这里主要是学习Go语言的基础部分。包括常量、变量、方法、接口、数组、切片、接口、Map、指针、流程控制。各个章节都有很详细的介绍和参考案例。
packages
https://github.com/ardanlabs/gotraining/tree/master/topics/go/packages
packages主要讲述了标准库context、encoding、io、log、reflect的一些注意事项、文章和例子。
profiling
https://github.com/ardanlabs/gotraining/tree/master/topics/go/profiling
这里主要列举了使用 go 工具来检查和分析我们的程序。有开启GODEBUG跟踪调度和GC的例子分析、HTTP跟踪、benchmark的内存和CPU分析、Mutex和block案例分析、go tool pprof和trace的使用。
testing
https://github.com/ardanlabs/gotraining/tree/master/topics/go/testing
主要内容包括是基准测试的例子分析、模糊测试的案例、内建Testing包的使用。
小结
上面就是几个培训资料的大概介绍。土拨鼠认为这个培训资料很值得大家去学习,仓库中例子和指导文章视频较多,实战性很强。有语言基础、标准库的讲解、代码设计、并发编程、算法练习、性能分析、代码测试等内容。相信学了这套教程,你就是Go高级工程师。
如果你有推荐的Go系列教程,欢迎留言推荐。
参考资料
[1]
gotraining: https://github.com/ardanlabs/gotraining
[2]ardanlabs: https://www.ardanlabs.com/
[3]ardanlabs-blog: https://www.ardanlabs.com/blog/
欢迎关注Go招聘公众号,获取更多精彩内容。