Skip to content

后记 ​

阅读提示

  • 适用版本:Go 1.21+(示例在 Go 1.22 下验证)· 前置知识:无 · 阅读时长:约 10 分钟

如果你真的将语法篇和进阶篇都仔细阅读完了,并且动手敲了代码,那么你会认识到 Go 的语法其实并不难,特性也并不多,经验丰富的人可能几天就上手了,它完完全全是一门面向工程的语言,这一点你会在以后的编码中慢慢体会到。倘若你学习完后感到无处施展拳脚,想要更深一步学习,我可以给出下面几个学习路线和示例项目以供参考。

Web 开发 ​

Web 开发是 Go 语言中一个很常见的应用场景,你可以尝试以下的几个开源 Web 框架:

如果你想要进行微服务开发,我推荐下面几个开源框架:

然后你需要与数据库交互,我推荐下面几个开源库:

你可以参照下面这些项目来进行学习:

IM 通讯 ​

使用 Go 进行 IM 开发,推荐下面这些开源项目:

网络编程 ​

Go 在网络编程这块也有非常多的应用,下面给出一些参考的开源项目:

游戏服务器 ​

在游戏服务器这个领域,有越来越多的企业转到 Go 这个方向

数据库开发 ​

数据库开发需要一定的技术功底,基于 Go 语言的数据库或引擎同样也不少,光是阅读它们的源代码就需要花费不少时间

命令行工具 ​

Go 非常适合用于命令行 CLI 工具开发,下面推荐几个命令行开发框架或库:

  • flag,flag 标准库
  • cobra,强烈推荐使用 cobra 进行 CLI 开发,有许多著名项目都是基于 cobra,比如 Docker,K8S 等
  • go-pretty,用于在命令行进行美观的输出
  • cli,轻量级的命令行框架
  • kingpin,强大灵活的命令行解析库

由于 cobra 十分常用,基于它进行命令行开发的项目非常多,随便都可以找到,下面只是一些参考项目:

上面只是列出了比较常见的领域,你可以看到的是 Go 在服务端领域应用较为广泛,而客户端则较少,其实 Go 在其他领域也有不少的应用,比如 webrtc,区块链,对象存储,云计算等等,感兴趣可以在 Github 上自行了解。

最后,如果你想更深入的了解Go语言的实现细节,比如slice和 map的底层数据结构,协程调度器的实现,GC垃圾回收的过程等等,前往实现原理章节了解更多内容。

完整示例 ​

下面的程序可以直接运行:复制到文件后执行 go run main.go,或粘贴到 Go Playground 运行。

go
package main

import (
	"encoding/json"
	"fmt"
)

type Lesson struct {
	Chapter string `json:"chapter"`
	Done    bool   `json:"done"`
}

func main() {
	lessons := []Lesson{
		{Chapter: "base", Done: true},
		{Chapter: "impl", Done: true},
		{Chapter: "advance", Done: true},
	}

	data, err := json.MarshalIndent(lessons, "", "  ")
	if err != nil {
		panic(err)
	}
	fmt.Println(string(data))
}

预期输出:

text
[
  {
    "chapter": "base",
    "done": true
  },
  {
    "chapter": "impl",
    "done": true
  },
  {
    "chapter": "advance",
    "done": true
  }
]

常见错误与踩坑 ​

  • 只看不练没有用。 动手把示例敲一遍,肌肉记忆才会留下。
  • 不要一上来就追框架。 标准库已经覆盖 HTTP、JSON、测试与性能分析,先从它开始。
  • 选一个项目做完。 一个打磨完整的小工具,比十个半途而废的 demo 更有价值。
  • 读你用到的库的源码。 Go 标准库可读性很好,多数问题 grep 一下源码就有答案。
  • 保持升级节奏。 Go 每半年一个版本;补丁版本可以放心升级,次要版本先跑一轮测试。

更新记录 ​

  • 2026-10-14:新增"阅读提示"、完整可运行示例(含预期输出)、常见错误与踩坑清单,以及本更新记录。