苦于没有 Go 实战项目?也许本文的一些想法可以试试

polaris · · 5462 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

实践是最好的学习!但新手学习完 Go 基础后,却不知道如何进行实践,因为很多人工作中还没有机会使用 Go。这里是一些对初学者友好的项目和资源,可以作为你项目实践的基础,甚至在将来项目中使用。 ## 01 实现 ZIP 算法 这个项目可以很有趣,也可能很无聊。也许你觉得标准库已经实现了。但造轮子对学习是很有帮助的,而且有标准库的实现,可以更好的对比自己实现的优劣。 通过练习这个项目,你能学习到: - ZIP 算法的原理; - 文件系统的工作方式; - 如何阅读 [RFC 文件](https://www.ietf.org/rfc/rfc1951.txt); ## 02 美化 panic 相信有些人第一次看到 panic 输出的消息时,不知道如何阅读,不清楚到底在说什么,到底哪里出错了。出于帮助自己或帮助别人的目的,我们可以创建一个库,将 panic 输出的消息更友好的展示,方便阅读。 通过这个库,你将学习到: - 错误处理; - 字符串操作; - 如何实现一个自己的库; ## 03 基于 Web 和 CLI 的下载管理器 开发一个下载服务,如果能够显示下载进度,这对使用者来说是很友好的,这样的下载进度功能的实现可以基于 Web 或 CLI。 尝试自己进行需求分析和设计。例如,如何从互联网读取文件,然后将文件写入本地磁盘。通过执行这两个步骤,大体上,你就实现了一个下载器。你可以一步步添加和增强相关功能来改进它。 Go 语言中文网公众号之前[推荐过相关的开源项目](https://mp.weixin.qq.com/s/ub9AQWvpfkyZJIeaJk1z5w)。 通过练习这个项目,你能学到: - 使用 HTTP 相关包/库从网路读取文件; - 使用 os 包写文件到磁盘,已经恢复功能(断点续传); - 通过 goroutine 管理多个连接同时写一个文件; - 使用 CLI I/O 分析输入参数并显示适当的进度条; - 使用与 Web 相关的函数/库创建 Web 界面; ## 04 基于 Web 或 CLI 的闹钟或提醒器 使用日历添加闹钟或提醒的 CLI 或 Web 应用。如果你认为这很容易,试着写一篇关于它的文章。 通过这个项目,你将学习到: - time 包的使用; - 如何管理终端的输入、输出; - 处理 Web 相关的知识,比如 HTTP、模板等; ## 05 数据库管理器(类似 Adminer) [Adminer](https://www.adminer.org/) 是一个很棒的数据库管理器,但它是 PHP 实现的,如果用 Go 实现的话,单个文件就可以部署,特别方便,而且可以利用 Go 其他的优势,可以快速构建一个基于 Web 的数据库管理器。 通过这个项目,你将学习到: - Web 相关的库和知识; - SQL 语法; - 管理用于浏览和管理数据库、表、行或列的数据库; - 如何管理使用 DB 时可能发生的安全问题; ## 06 CLI 文件管理器 有一个 C 语言项目:<https://github.com/jarun/nnn>,它是一个基于终端的文件管理器。你可以尝试使用 Go 实现一个。这个项目适合有点挑战的。 通过这个项目,你将学习到: - 文件系统相关操作的实现(比如 list、copy、delete、paste、open 或 read 等); - 为 CLI 应用创建 UI; - 使用 goroutine 管理后台任务(比如复制一个大文件); ## 07 聊天室 这个项目可以是基于普通 TCP 长连接的聊天室,也可以是基于 WebSocket 的聊天室。这里会涉及一些细节,可以参考一些现实中的聊天室,实现一个。 通过这个项目,你将学习到: - WebSocket 的原理、API 和 Go 对其操作; - Goroutine 和 channel 的使用; - Socket 编程; ## 08 发布系统 基于 Git 创建一个发布系统,这是一个 Web 项目,但同时也会涉及比较多的 Unix 相关命令操作,还会涉及权限、角色等。 通过这个项目,你将学习到: - 对 Git 相关命令更熟悉,掌握相关工作原理; - 在 Go 中如何运行 bash 命令; - 权限系统相关知识; - Web 知识; 以上这些项目是一个引子,供参考,主要想帮助那些觉得不知道如何实战的 Go 爱好者。其他常见的实战项目,比如博客、社区等。希望各位能够通过实践更好的掌握 Go 语言。 参考:<https://smoqadam.me/posts/a-few-ideas-for-your-next-go-project/>

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

5462 次点击  ∙  2 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传