【专题】GoLang 编程语言

2010-10-06 topic language golang

GoLang 是谷歌 2009 年发布的开源编程语言,其开发人员都是计算机界大神一般的存在,提供了便捷的协程使用,具有很高的并发性。目前很多 Cloud Native 软件都是通过 GoLang 编写,例如 Docker、K8S、LXD 等等。

GoLang Logo

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 。

  • 基本介绍 介绍环境搭建、常用工具、单元测试、环境变量、三方包安装等。
  • 包管理机制 因为历史原因,包管理有点复杂,尤其是在语言本身引入了 mod 包管理机制之后。

基本语法

  • 语法简介 介绍常见的语法,例如 import、异常处理、反射等。
  • 管道详解 关于管道的使用方法,以及部分详细的介绍。
  • 异常处理 除了介绍基本使用方法之外,还讨论其具体的使用场景。
  • 结构体 类似于 C 中的结构体,各种对象的集合,但是使用更加复杂。
  • Array VS. Slice 关于数组和切片的基本概念介绍。
  • nil 解析 类似于其它语言的 None NULL 等,但又略有区别。
  • 闭包简介 与其它语言中的闭包概念相同,介绍下 GoLang 中的使用。

语法进阶

  • 并发控制 常见的并发控制方法,例如 WaitGroup、Context 等。
  • 接口简介 接口是 GoLang 中比较有特色的实现,这里详细介绍,还可以参考 接口实现反射简介
  • 逃逸分析 编译阶段 GoLang 会决定某个变量是在栈上还是堆上分配,还可以参考 内存管理 的相关介绍。
  • 内存模型 主要是介绍一些协程同步相关的内容。
  • 调度机制 核心是协程,这样就需要在用户态实现协程的调度。
  • 汇编语言 参考了 Plan 9 汇编语言,使用方式与 Intel 以及 AT&T 有所区别。
  • Gopher 介绍 GoLang 中常用的规范技巧。
  • 常见陷阱 一些经常出错的点。

测试相关

  • 单元测试 使用的是基本的 testing 模块,可以执行单元测试、性能测试。
  • 竞态检查 在并发编程中如何进行竞态条件的测试。
  • 调试方法 主要是调用栈。

常用工具

  • 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 在现在前后端分离的时代,虽然模板用途不大但还有一定的使用场景。
  • databasegorm 介绍关系型数据库相关的操作,包括基本操作以及 GORM 使用,还可以参考 关联操作
  • validator 用于常规的一些参数校验,提供了很多基础实现,同时支持自定义。
  • casbin 一个强大开源访问控制实现,支持 RBAC、ACL 等等。
  • 常用模块 整理一些比较小但是常用的模块,例如 fmt flag unsafe signal container 等。

Webs

  • 网络编程 一些与网络编程相关的介绍。
  • HTTP 最常用的 HTTP 模块,介绍官方提供在 GoLang 中实现。

Echo

这是一个开源高性能的 HTTP 框架。

  • 基本入门 一个 HTTP 的 Echo 框架,也可以使用 FastHTTP 作为底层。
  • 常用中间件 提供了一套灵活的中间件框架,官方提供了很多通过中间件,也可以自己实现。

参考

文档

Awosome

工具

其它

  • Go 语言中文网 由于官方网站被墙,可以访问该网站,包含了最新的安装包。