Logo

课程回顾

我们在这门课程中涵盖了大量内容,让我们快速回顾一下,感谢我们走过的这段路程

概念

课程回顾

我们在这门课程中涵盖了大量内容,让我们快速回顾一下,感谢我们走过的这段路程

概述

在概述部分,我们刚刚开始热身。我们讨论了命令行程序的一般特性及其为何如此有用。

接着,我们深入研究了 Go 编程语言,并探索了其独特的属性。

随后,我们分析了十个流行且高质量的 Go 项目,以展示 Go 在相对较短时间内所取得的巨大影响力。

最后,我们介绍了贯穿整个课程的示例项目——multi-git 应用程序。

重构 multi-git

在本节中,我们为后续的重大改进做好了 multi-git 的准备。我们设计了一个合理的目录结构,遵循 Go 社区的最佳实践,设置了 pkg 和 cmd 顶层目录;然后将核心逻辑重构到 pkg/repo_manager 包中,将命令行接口重构到 cmd/mg 包中。

测试 1,2,3

在测试部分,我们专注于为 multi-git 添加测试。测试始终重要,尤其是在重构时。首先,我们介绍了 Go 自带的测试支持,它功能强大且全面,但未必用户友好。为此,我们引入了 Ginkgo 和 Gomega,以及基于 Go 测试支持构建的 BDD 测试框架。

接着,我们为 multi-git 创建了一些端到端测试。

添加智能命令行解析

在智能命令行解析部分,我们首次接触了 Cobra。我们研究了如何将 Cobra 作为库使用,然后探索了如何利用它生成一个完整的应用程序骨架。我们对 multi-git 进行重构,改用 Cobra 进行命令行解析,取代了原有的自定义命令行参数解析方式。

添加高级配置

在高级配置部分,我们遇到了 Viper。Viper 可以独立使用,但与 Cobra 结合使用效果更佳。我们探讨了环境变量、配置文件和远程配置存储。我们体验了 Viper 对多种配置源的支持,然后对 multi-git 进行重构,充分利用了所有这些优势。

添加花里胡哨的功能

此时的 multi-git 已经是一个不错的命令行程序,但我们又多走了一步:将 git 标签和构建时间嵌入可执行文件,添加了一个酷炫的 GitHub Actions 流水线,让 multi-git 在运行时能自动更新自身,甚至展示了如何将其打包成 Docker 镜像。最后,我们添加了一个漂亮的 Makefile,帮助我们构建和管理 multi-git。

总结

哇,这真是干货满满。本课程聚焦于命令行程序,但其中许多概念也可应用于任何 Go 程序,包括测试、重构方法、配置以及将 Go 程序容器化。

希望你学得愉快,并掌握了一些实用技能。正如我在“为什么选择 Go?”一课中提到的,Go 是一种独特且强大的工具。

接下来该往哪里走?Go 极其灵活,远不止命令行程序。它是云时代的语言。如今许多现代云软件,如 Docker、Kubernetes、各种消息队列和数据存储系统,都是用 Go 构建的。

我个人非常推崇 Kubernetes,也写过几本相关书籍。如果你喜欢通过书籍学习,务必去看看:

  • 《精通 Kubernetes》第 3 版
  • 《动手实践微服务:基于 Kubernetes》

祝你们一切顺利。持续学习,不断创造酷炫的东西。

测验

开玩笑的!

添加铃铛和花哨功能