Table of Contents
1. 前言
Go语言系列专题汇总文章。基本上会将Go语言的方方面面都梳理一遍。
版本申明,所有原创的代码及实验都是基于以下版本:
$ go version
go version go1.12 darwin/amd64
2. 基础
Golang Basic介绍了Go语言的语法基础及特点。并列出了Go语言的官方命令行工具以及如何使用。基本上熟悉Go语言的读者可以直接忽略这块。
官方有个常见问题列表,这里放一下,有需求可以检索下:Frequently Asked Questions (FAQ)。
3. 版本历史
一门技术,其历史版本更新的跟进是非常重要的,这对于了解功能演进以及了解变化都是非常有意义的。NodeJs我一直有跟进:V8博客摘要翻译。而Go语言于我来说是比较新的东西,历史的更新必然是没有跟进的。这里推荐Tony Bai大神的Go博客,对我来说感觉算是Go语言类似布道者的角色了。
- Go 1.12中值得关注的几个变化
- Go 1.11中值得关注的几个变化
- Go 1.10中值得关注的几个变化
- Go 1.9中值得关注的几个变化
- Go 1.8中值得关注的几个变化
- Go 1.7中值得关注的几个变化
- Go 1.6中值得关注的几个变化
- Go 1.5中值得关注的几个变化
4. 模块
深入1.11版本终于实装的官方Go语言模块系统:go modules(vgo),详见:Golang Modules。
5. 内存
从Go内存的分配,到内存回收,到Profiling工具,全方面的Go内存知识点分析,详见:Golang Memory。
6. CPU
CPU部分相对来说比较简单,其关键知识点和Gorountine结合比较紧密,会在后面的篇章一起说明。此外,Profiling相关的知识点可以直接看Memory部分的内容,工具应该说是一致的,只是API及命令有部分不同。细节详见:Golang CPU。
7. Go程
Go应用程序最为重要的设计,也是Go得以从那么多编程语言中脱颖而出的核心。详见:Golang Goroutine。
8. Debug
Go程序Debug有点类似于C语言,拥有一款和GDB相似的工具Delve。详见:Golang Debug。
9. 监控
Go进程的基础监控可以使用:prometheus/client_golang。此外,可以使用该库拓展其功能,添加应用级别的自定义metrics,可以说是相当通用。
出乎意料的是,Grafana Dashboard竟然没有找到比较通用可靠的Go进程基本监控面板。一个热度如此之高的编程语言,其基本监控面板居然在Grafana Labs中缺失,简直不可想象。
10. Advanced
- 通道管线:
- 单例模式:
- 数组切片:
- 错误处理:
- Error handling and Go
- Defer, Panic, and Recover
- Working with Errors in Go 1.13:1.13版本的最新错误处理相关改动
- 类型转换:
- 泛型:
- Why Generics?
- 这只是一个设想,后面到底会如何实装还要看后续发展
- 并发:
11. 常见问题
12. 工具
- ORM:jinzhu/gorm
- Logger:uber-go/zap
- Cache:bradfitz/gomemcache
EOF