主要观点:作者一直对 Go 语言感兴趣但未掌握,2016 - 2018 年开始,到 2023 年已在多个项目中使用 Go 语言,包括写项目、脚本、库等,现在 Go 已成为其工具包中的语言之一,虽仍有爱恨交织,但爱多于恨。
关键信息:
- 2016 - 2018 年开始对 Go 语言感兴趣,当时语言特性与现在不同。
- 2023 年写了第一个 Go 项目、第一个库等。
- 喜欢 Go 语言的点:默认生成静态二进制文件、编译快、反馈快、启动快、模块管理方便、
go
CLI 工具功能强大。 - 不太喜欢的点:测试基于接口而非断言需重复写断言代码、
must*
函数需重复写、缺乏空值性(可丢失上下文)、语言的可变特性、依赖过多魔法(如internal
和main
包、名称大小写表示可见性、按文件名条件编译、魔法注释等)。
重要细节:
- 写博客也用 Go 脚本自动发布,之前是 Python 脚本。
- 用 Go 写脚本更频繁是因为反馈快。
- 对 Python 命令行工具的启动时间敏感,Go 很少有此问题。
- 模块管理虽有怪癖但用
go
CLI 很方便且能生成依赖哈希。 go
CLI 可管理依赖、生成文档、格式化代码等。- 引用 Rob Pike 话说明代码简单时宁愿复制也不引入依赖。
- 给出写断言和
must*
函数的示例代码。 - 对比有和没有空值性的代码示例说明其对开发体验的影响。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。