返回文章列表

文章

Go的练习项目推荐

以下是一些适合用来练手、并且活跃在社区里的 Go 语言开源项目与练习路径,既可以阅读优秀的工程实践,也能动手参与、小规模改造或二次开发:

  1. Gophercises——Go 练习集
    • 项目地址: https://github.com/gophercises
    • 特色:由著名的 Go 教程作者 Jon Calhoun 出品,包含 36 个小练习(从构建 CLI、Web 服务到第三方 API 集成),每个练习都有完整的示例与测试。
    • 练习建议:挑选还未做过的练习,先独立实现一遍,再对比官方解法,最后可以给仓库提一个小 PR(如修复 typo、补充测试用例等)。
  2. Hugo——静态网站生成器
    • 项目地址: https://github.com/gohugoio/hugo
    • 特色:极高性能的静态站点生成工具,代码量适中,模版引擎、文件系统、并发渲染等模块都很经典。
    • 练习建议:从源码阅读 CLI 入口开始,找到模板渲染部分,添加一个自定义 shortcode,然后提交一个功能性 PR。
  3. Cobra + Viper 示例 CLI
    • 教程仓库: https://github.com/spf13/cobrahttps://github.com/spf13/viper
    • 特色:Cobra 是最流行的 Go CLI 框架,Viper 用于配置管理。
    • 练习建议:基于 Cobra+Viper 快速搭建一个命令行小工具(如文件名批量重命名、目录同步),并发布到 GitHub,体验 Flag、子命令、配置文件和自动生成文档的流程。
  4. Gin Web 框架示例项目
    • 教程仓库: https://github.com/gin-gonic/examples
    • 特色:官方给出的多种 Web 应用示例(REST API、模板渲染、WebSocket、文件上传等)。
    • 练习建议:任选一个示例(如 TodoList REST API),先理解代码后,加入 JWT 鉴权或接入 Redis 缓存,作为练手项目。
  5. Go-Micro 服务示例
    • 项目地址: https://github.com/asim/go-micro
    • 特色:一个用于构建微服务的全功能框架,涵盖服务发现、RPC、消息队列、配置中心等。
    • 练习建议:搭一个「用户服务 + 订单服务」的小系统,服务间通过 Go-Micro RPC 通信,并引入 NATS 或 Kafka 做异步事件。
  6. Bleve 简易搜索引擎
    • 项目地址: https://github.com/blevesearch/bleve
    • 特色:全文检索库,支持索引、查询、分词、多字段搜索。
    • 练习建议:做一个文档管理 Web 应用,用户上传 PDF/TXT,后台用 Bleve 建索引,前端提供搜索接口。
  7. NSQ——分布式消息队列
    • 项目地址: https://github.com/nsqio/nsq
    • 特色:高可用、零依赖、纯 Go 实现的实时消息平台,源码清晰。
    • 练习建议:在本地部署一套 NSQ,写一个生产者发送消息、消费者处理消息的 demo,或为其中某个工具(如 nsqadmin)加一个新功能。
  8. 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 语法和标准库使用,也能让你了解社区最佳实践与工程细节。祝你练手愉快!