GoLang 是谷歌 2009 年发布的开源编程语言,其开发人员都是计算机界大神一般的存在,提供了便捷的协程使用,具有很高的并发性。目前很多 Cloud Native 软件都是通过 GoLang 编写,例如 Docker、K8S、LXD 等等。
Golang 从 2007 年末由 Robert Griesemer、Rob Pike、Ken Thompson 主持开发,后来还加入了 Ian Lance Taylor、Russ Cox 等人,最终于 2009 年 11 月开源,在 2012 年发布了稳定版本。
实际上,Golang 基于现有的技术实现,例如协程 (Coroutine)、IO 多路复用 (multiplexing)、异步 IO 等,然后在此之上进行了一些原语的封装。开始 Golang 包含了很多 C 语言代码,在 1.5 版本开始,包括运行时 (runtime)、编译器 (compiler)和连接器 (linker) 也都全部是由 Golang 所编写。
现在 Golang 的开发已经是完全开放的,并且拥有一个活跃的社区。简单来说,Golang 是一个开源、高并发、高效的编程语言,支持垃圾回收,具有很好的可伸缩性。
而且,越来越多的项目开始使用 Golang 进行开发,例如 Docker、LXD、InfluxDB、etcd 等等。另外,与 Golang 类似的高并发语言还可以参考 Rust、Elixir 。
基本语法
- 语法简介 介绍常见的语法,例如 import、异常处理、反射等。
- 管道详解 关于管道的使用方法,以及部分详细的介绍。
- 异常处理 除了介绍基本使用方法之外,还讨论其具体的使用场景。
- 结构体 类似于 C 中的结构体,各种对象的集合,但是使用更加复杂。
- Array VS. Slice 关于数组和切片的基本概念介绍。
- nil 解析 类似于其它语言的 None NULL 等,但又略有区别。
- 闭包简介 与其它语言中的闭包概念相同,介绍下 GoLang 中的使用。
语法进阶
- 并发控制 常见的并发控制方法,例如 WaitGroup、Context 等。
- 接口简介 接口是 GoLang 中比较有特色的实现,这里详细介绍,还可以参考 接口实现、反射简介 。
- 逃逸分析 编译阶段 GoLang 会决定某个变量是在栈上还是堆上分配,还可以参考 内存管理 的相关介绍。
- 内存模型 主要是介绍一些协程同步相关的内容。
- 调度机制 核心是协程,这样就需要在用户态实现协程的调度。
- 汇编语言 参考了 Plan 9 汇编语言,使用方式与 Intel 以及 AT&T 有所区别。
- Gopher 介绍 GoLang 中常用的规范技巧。
- 常见陷阱 一些经常出错的点。
测试相关
常用工具
- delve 用来调试 GoLang 代码,简单介绍其使用方法。
- Temporal 微服务架构平台,提供了基础的工作流编排、状态查询等功能。
- APM 用于分布式监控,包括一个简单的 APPDash 实现。
- 常用工具 常用的工具,包括了 gvm、gdm、goreman 等。
三方模块
- log 包括了基础模块以及三方库 ZAP 使用详细介绍。
- jwt 通常用于传递身份以及认证信息,可以防止篡改。
- ini 介绍如何读取最简单的配置文件 INI 格式。
- i18n 国际化相关的内容,包括常见的使用技巧。
- gRPC、源码详解 使用方式,包括了拦截器、负载均衡、REST 转换等。
- json 简单记录使用 JSON 的常用技巧。
- bytes 包括了 String、Bytes 的基本概念,序列化以及反序列化等操作。
- time 主要是与定时器相关的内容。
- sync 提供了常见的并发编程同步原语。
- pprof 常用的性能检查以及问题排查方法。
- websocket 用来处理 Websocket 请求,包括协议提升、Ping 处理等。
- template 在现在前后端分离的时代,虽然模板用途不大但还有一定的使用场景。
- database、gorm 介绍关系型数据库相关的操作,包括基本操作以及 GORM 使用,还可以参考 关联操作。
- validator 用于常规的一些参数校验,提供了很多基础实现,同时支持自定义。
- casbin 一个强大开源访问控制实现,支持 RBAC、ACL 等等。
- 常用模块 整理一些比较小但是常用的模块,例如 fmt flag unsafe signal container 等。
Webs
Echo
这是一个开源高性能的 HTTP 框架。
参考
文档
- How to Write Go Code 主要介绍 GoLang境中如何进行编写代码。
- Network programming with Go,关于网络编程相关。
- Go Resources,有两本不错的书 An Introduction to Programming in Go、Introducing Go。
- Go Bootcamp、The Little Go Book、Learning Go、Building Web Apps With Go 。
Awosome
- Golang Standard Library by Example Go 语言标准库的一些常见示例。
- How to Build A Web with GoLang 介绍如何通过 Go 语言构建 Web 应用。
工具
- Golang Security Checker Go 语言的静态语法检查。
其它
- Go 语言中文网 由于官方网站被墙,可以访问该网站,包含了最新的安装包。