实践是最好的学习!但新手学习完 Go 基础后,却不知道如何进行实践,因为很多人工作中还没有机会使用 Go。这里是一些对初学者友好的项目和资源,可以作为你项目实践的基础,甚至在将来项目中使用。
这个项目可以很有趣,也可能很无聊。也许你觉得标准库已经实现了。但造轮子对学习是很有帮助的,而且有标准库的实现,可以更好的对比自己实现的优劣。
通过练习这个项目,你能学习到:
相信有些人第一次看到 panic 输出的消息时,不知道如何阅读,不清楚到底在说什么,到底哪里出错了。出于帮助自己或帮助别人的目的,我们可以创建一个库,将 panic 输出的消息更友好的展示,方便阅读。
通过这个库,你将学习到:
开发一个下载服务,如果能够显示下载进度,这对使用者来说是很友好的,这样的下载进度功能的实现可以基于 Web 或 CLI。
尝试自己进行需求分析和设计。例如,如何从互联网读取文件,然后将文件写入本地磁盘。通过执行这两个步骤,大体上,你就实现了一个下载器。你可以一步步添加和增强相关功能来改进它。
Go 语言中文网公众号之前推荐过相关的开源项目。
通过练习这个项目,你能学到:
使用日历添加闹钟或提醒的 CLI 或 Web 应用。如果你认为这很容易,试着写一篇关于它的文章。
通过这个项目,你将学习到:
Adminer[2] 是一个很棒的数据库管理器,但它是 PHP 实现的,如果用 Go 实现的话,单个文件就可以部署,特别方便,而且可以利用 Go 其他的优势,可以快速构建一个基于 Web 的数据库管理器。
通过这个项目,你将学习到:
有一个 C 语言项目:https://github.com/jarun/nnn,它是一个基于终端的文件管理器。你可以尝试使用 Go 实现一个。这个项目适合有点挑战的。
通过这个项目,你将学习到:
这个项目可以是基于普通 TCP 长连接的聊天室,也可以是基于 WebSocket 的聊天室。这里会涉及一些细节,可以参考一些现实中的聊天室,实现一个。
Go 语言中文网发布过一系列 Go 和 React 构建聊天室的文章。
通过这个项目,你将学习到:
基于 Git 创建一个发布系统,这是一个 Web 项目,但同时也会涉及比较多的 Unix 相关命令操作,还会涉及权限、角色等。
通过这个项目,你将学习到:
以上这些项目是一个引子,供参考,主要想帮助那些觉得不知道如何实战的 Go 爱好者。其他常见的实战项目,比如博客、社区等。希望各位能够通过实践更好的掌握 Go 语言。
RFC 文件: https://www.ietf.org/rfc/rfc1951.txt
[2]Adminer: https://www.adminer.org/
推荐阅读
我是 polarisxu,北大硕士毕业,曾在 360 等知名互联网公司工作,10多年技术研发与架构经验!2012 年接触 Go 语言并创建了 Go 语言中文网!著有《Go语言编程之旅》、开源图书《Go语言标准库》等。
坚持输出技术(包括 Go、Rust 等技术)、职场心得和创业感悟!欢迎关注「polarisxu」一起成长!也欢迎加我微信好友交流:gopherstudio