文章
Go的练习项目推荐
以下是一些适合用来练手、并且活跃在社区里的 Go 语言开源项目与练习路径,既可以阅读优秀的工程实践,也能动手参与、小规模改造或二次开发:
- Gophercises——Go 练习集
- 项目地址: https://github.com/gophercises
- 特色:由著名的 Go 教程作者 Jon Calhoun 出品,包含 36 个小练习(从构建 CLI、Web 服务到第三方 API 集成),每个练习都有完整的示例与测试。
- 练习建议:挑选还未做过的练习,先独立实现一遍,再对比官方解法,最后可以给仓库提一个小 PR(如修复 typo、补充测试用例等)。
- Hugo——静态网站生成器
- 项目地址: https://github.com/gohugoio/hugo
- 特色:极高性能的静态站点生成工具,代码量适中,模版引擎、文件系统、并发渲染等模块都很经典。
- 练习建议:从源码阅读 CLI 入口开始,找到模板渲染部分,添加一个自定义 shortcode,然后提交一个功能性 PR。
- Cobra + Viper 示例 CLI
- 教程仓库: https://github.com/spf13/cobra 和 https://github.com/spf13/viper
- 特色:Cobra 是最流行的 Go CLI 框架,Viper 用于配置管理。
- 练习建议:基于 Cobra+Viper 快速搭建一个命令行小工具(如文件名批量重命名、目录同步),并发布到 GitHub,体验 Flag、子命令、配置文件和自动生成文档的流程。
- Gin Web 框架示例项目
- 教程仓库: https://github.com/gin-gonic/examples
- 特色:官方给出的多种 Web 应用示例(REST API、模板渲染、WebSocket、文件上传等)。
- 练习建议:任选一个示例(如 TodoList REST API),先理解代码后,加入 JWT 鉴权或接入 Redis 缓存,作为练手项目。
- Go-Micro 服务示例
- 项目地址: https://github.com/asim/go-micro
- 特色:一个用于构建微服务的全功能框架,涵盖服务发现、RPC、消息队列、配置中心等。
- 练习建议:搭一个「用户服务 + 订单服务」的小系统,服务间通过 Go-Micro RPC 通信,并引入 NATS 或 Kafka 做异步事件。
- Bleve 简易搜索引擎
- 项目地址: https://github.com/blevesearch/bleve
- 特色:全文检索库,支持索引、查询、分词、多字段搜索。
- 练习建议:做一个文档管理 Web 应用,用户上传 PDF/TXT,后台用 Bleve 建索引,前端提供搜索接口。
- NSQ——分布式消息队列
- 项目地址: https://github.com/nsqio/nsq
- 特色:高可用、零依赖、纯 Go 实现的实时消息平台,源码清晰。
- 练习建议:在本地部署一套 NSQ,写一个生产者发送消息、消费者处理消息的 demo,或为其中某个工具(如
nsqadmin)加一个新功能。
- Go WebSocket 聊天室
- 教程示例: https://github.com/gorilla/websocket/tree/master/examples/chat
- 特色:基于 Gorilla WebSocket 包的经典聊天示例,涉及连接管理、并发控制。
- 练习建议:在此基础上增加房间功能、私聊、消息持久化(接入 BoltDB 或 SQLite),甚至打包成 Docker 镜像一键部署。
练习思路 1. 先读后写:从最感兴趣的项目中挑一处核心模块(如 HTTP 路由、中间件、并发模型)仔细读懂; 2. 小范围改造:为该项目添加一个小功能或修复一个 Issue; 3. 提交 PR:连同单元测试一起提交,体会开源协作流程; 4. 二次开发:如果是脚手架或模板类项目,克隆下来做些重构,练习项目结构设计。 以上项目涵盖了 CLI、Web、微服务、搜索和消息队列等多种常见场景,既能帮你巩固 Go 语法和标准库使用,也能让你了解社区最佳实践与工程细节。祝你练手愉快!