All Articles

Golang Notes

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语言类似布道者的角色了。

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

11. 常见问题

12. 工具

EOF

Published 2019/2/25

Some tech & personal blog posts