Go 词汇的产业发展愈来愈好了,许多小厂采用 Go 做为主要就合作开发词汇,也有许多人已经开始自学 Go,预备转 Go 合作开发。
因此,是并非学呢?
我辨认出,在网络黄金时代,自学的十分困难并非说没数据资料,而要数据资料太少,不晓得如果看别的,从哪已经开始看。
因此,我重新整理了这份 Go 自学走线,这本自学走线不以数目获胜,重实效简化。从此基础到高阶,从方法论到两栖作战,总共主要就包括下列两个文本:
入门讲义高阶讲义书刊所推荐Web 合作开产业发展枝工程项目VirtualDub技术街道社区star
那就太非常感谢了。
入门讲义
Go 词汇中国日报 – Go 词汇入门讲义
中文网站镜像: http://c.biancheng.net/golang/
这套 Go 词汇讲义通俗易懂,深入浅出,既适合没此基础的读者快速入门,也适合工作多年的程序员查阅知识点。
菜鸟讲义 – Go 词汇讲义
中文网站镜像: https://www.runoob.com/go/go-tutorial.html
这个中文网站就不需要多介绍了吧,许多编程词汇的入门讲义都可以在这里找到。平时写代码过程中,某个知识点忘了,也可以到这里查。
W3Cshcool – Go 讲义
中文网站镜像: https://www.w3cschool.cn/go/
也是一个综合性的编程入门讲义中文网站,数据资料许多,也都很此基础。
Go by Example
中文网站镜像: https://gobyexample.com/
许多代码示例,自学此基础知识的时候很实用。可以一边看方法论,一边参考这个中文网站写代码,效果会更好。
地鼠文档
中文网站镜像: https://www.topgoer.cn/
可以说是 Go 编程的导航中文网站了,收藏了许多 Go 自学数据资料。主要就包括中文网站,书刊,开源库,开源工程项目等。
高阶讲义
mojotv 博客
中文网站镜像:https://mojotv.cn/
很不错的博客,里面许多 Go 高阶文章,还有其他方面的控制技术文章,值得一读。我试图找了一下作者信息,但是没找到。
煎鱼 – Go 词汇设计哲学
中文网站镜像:https://golang3.eddycjy.com/
煎鱼大佬的博客,结合官方数据资料和作者自己的理解,梳理出的一系列 Go 词汇设计相关的理念和哲学的文章。
面向信仰编程 – Go 词汇设计与实现
中文网站镜像:https://draveness.me/golang/
左神的博客,文本很深,想要成为大神的话,绝对要来看。
Go 夜读
中文网站镜像: https://talkgo.org/
这是一个由众多资深 Gopher 组织的开源工程项目,主要就是对 Go 源码进行解读。并且坚持开源,将相关资源都上传到了 GitHub。
书刊所推荐
书单总共包含 10 本书,分为入门 5 本,高阶 5 本。我读过其中 7 本,另外 3 本虽然没读过,但也是网上所推荐比较多的。
虽然分了入门和高阶,但是许多书中这两部分文本是都包含了的。大家看的时候可以根据自己的情况,先打好此基础,再进行高阶。
有的书是开源的,可以直接在线阅读,有的有电子书,大家可以在这里 GitHub 找到下载方式。如果条件允许的话,买正版是最好的。
入门
《Go词汇趣学指南》本书是一本面向 Go 词汇初学者的书,文本也比较浅,非常适合入门。
书中循序渐进地介绍了采用 Go 词汇必需晓得的知识,展示了非常多生动有趣的例子,并通过提供大量练习来加深读者对书中所述文本的理解。
《Go 入门指南》这本书的英文名称叫《The Way to Go》,作者利用业余时间来进行翻译工作。在取得原作者 Ivo Balbaert 授权的情况下,将其开源。
在线阅读: https://github.com/Unknwon/the-way-to-go_ZH_CN
《Go 词汇编程》本书以介绍 Go 词汇特性为主,示例则尽量采用作者平常的实践,而并非一个没太大实际意义的语法示范样例。通过与 C++ 和 Java 做一个横向比较,可以更直观看出其设计理念的差别。
作者许式伟为原金山 WPS 首席架构师、曾是盛大创新院研究员,目前是国内 Go 词汇实践圈子公认的 Go 词汇专家。参与本书写作的几位作者都是实际用 Go 词汇合作开发的工程项目的合作开发人员,有较强的两栖作战经验。
《Go 词汇 101》是一本着墨于 Go 语法语义以及运行时相关知识点的编程指导书(Go 1.17 就绪)。此书旨在尽可能地帮助 Go 程序员更深更全面地理解 Go 词汇。
此书也搜集了 Go 词汇和 Go 编程中的许多细节,其中有一些在官方文档中从未提及。
此书同时适合 Go 初学者和有一定经验的 Go 程序员阅读。
在线阅读: https://gfw.go101.org/article/101.html
《Go 词汇程序设计》本书由作者 Kernighan 和谷歌公司 Go 团队主管 Alan Donovan 联袂撰写,是自学 Go 词汇的指南级书刊。文本翔实全面,涵盖了全部此基础文本,值得一读。
高阶
《Go 词汇两栖作战》相比于其他控制技术书刊,这本书很薄。显然,这并非面面俱到,涵盖所有知识点的一本书,但它直击要点。
我在阅读过程中,最大的感受就是,许多看此基础知识过程中碰到的,又很难通过搜索引擎找到答案的问题,在这里获得了解答。
《Go Web 编程》学词汇并非目的,能够采用这门语言来干活并挣到钱,才是目的。因此,不得不学一下 Go 在 Web 编程方面的应用。
这本书是由黄健宏翻译的,这位译者,还著有《Redis 设计与实现》一书,书中深入浅出地分析了 Redis 所用的数据结构和设计思想,属实优秀。
《Go 词汇高级编程》涵盖 CGO、Go 汇编、RPC 实现、Web 框架、分布式系统等高阶主题。书中章节之间没很强的关联性,每个章节都是独立的知识,完全可以按需阅读。
在线阅读: https://github.com/chai2010/advanced-go-programming-book
《Go 词汇自学笔记》作者是雨痕大佬,2015 年第一届 GopherChina 大会讲师。
本书分上下两卷:
上卷细致解析了词汇规范相关细节,便于读者深入理解词汇相关功能的采用方法和注意事项。
下卷则对运行时源码做出深度剖析,引导读者透彻了解词汇功能背后的支持环境和运行体系,诸如内存分配、垃圾回收和并发调度等。本书不适合编程初学入门,可供有实际编程经验或正在采用 Go 工作的人群参考。
《Go 词汇底层原理剖析》本书采用浅显易懂的词汇与大量图片深入介绍了 Go 词汇编译时、类型系统、语法特性、函数调用规范、并发编程、内存管理与垃圾回收、运行状态监控等模块的采用方法和底层原理。
对于想要了解 Go 底层原理,阅读源码的同学来说,可以阅读此书,但想要完全理解书中的文本,并并非一件容易的事。
Web 合作开发
Go 是一种开源编程词汇,可以轻松构建简单、可靠和高效的软件。也正因为它简单、可靠、高效的特性,在采用 Go 词汇合作开发 Web 应用时有下列的优势:
更简单更强的编译能力更高的性能良好的 IDE 支持和调试功能语法简单易上手下面介绍 5 个开源 Web 框架,选择它们的标准是:在 GitHub 上 star 多,维护积极,被采用的多并且查找数据资料方便。
Gin
工程项目地址:https://github.com/gin-gonic/gin
一个完全由 Go 词汇编写而成的 HTTP Web 框架,提供了一个速度更快的、性能更高的 Go 词汇 Web 合作开发框架。
这个框架对于初学者来说很容易上手,而且在 Web 框架中,star 是最多的,采用的人也非常多。
Beego
工程项目地址: https://github.com/beego/beego
Beego 是一款由 Go 词汇合作开发专家 Asta谢 合作开发的一款简单易用的企业级 Go 应用合作开发框架,具备全中文的官方中文网站和讲义。
不同于其他框架词汇,Beego 不仅仅提供图文讲义,还提供了视频讲义,这一点对国内的合作开发人员来讲是非常友好的。
Iris
工程项目地址: https://github.com/kataras/iris
Iris 框架在其官方中文网站上被描述为 Go 合作开发中最快的 Web 框架,并给出了多框架和多词汇之间的性能对比。
如果你正在选择一款性能不错、轻量级且简单易上手的 Go 词汇 Web 合作开发框架,Iris 是一个不错的选择。
Echo
工程项目地址: https://github.com/labstack/echo
Echo 是个快速的 HTTP 路由器(零动态内存分配),也是 Go 的微型 Web 框架。
其具备快速 HTTP 路由器、支持扩展中间件,同时还支持静态文件服务、WebSocket 以及支持制定绑定函数、制定相应渲染函数,并允许采用任意的 HTML 模版引擎。
GoFrame
工程项目地址: https://github.com/gogf/gf
GoFrame 是一款模块化、高性能、企业级的 Go 此基础合作开发框架。GoFrame 并非一款 WEB/RPC 框架,而要一款通用性的此基础合作开发框架,是 Golang 标准库的一个增强扩展级,包含通用核心的此基础合作开发组件。
优点是两栖作战化、模块化、文档全面、模块丰富、易用性高、通用性强、面向团队。
总体来说,这个工程项目具有完善的中文文档和周边合作开发库,活跃的 issue 讨论区,工程项目模块化设计很好。
这 5 个开源工程项目各有优劣,有的已经被市场验证,采用广泛;有的做为后起之秀,产业发展迅速。
大家可以挑选自己感兴趣的来自学和采用。
展枝工程项目
学完了方法论,接下来就是两栖作战,已经开始做工程项目。除了 Web 合作开发之外,还有许多方向可以选择,比如 db,cache,im 等等。而且做为展枝工程项目,不能太复杂,否则根本看不懂,反而打击信心,起不到锻炼的效果。
这里我选择了 5 个工程项目,整体上来说,代码量并非很大,难度也适中。而且不同工程项目可以自学到不同的控制技术点,大家可以选择自己感兴趣的来尝试。
id-maker
工程项目地址:https://github.com/yongxinz/id-maker
Go 合作开发的一款分布式唯一 ID 生成系统。
代码量少,工程项目整体难度小,通过这个工程项目可以自学到 httpServer,gRPC 相关知识。
cache2go
工程项目地址: https://github.com/muesli/cache2go
比较简单的一个缓存库,代码量很少,适合新手自学。通过这个工程项目可以自学到锁、goroutine 等知识。
rosedb
工程项目地址: https://github.com/flower-corp/rosedb
rosedb 是一个稳定、高性能、快速、内嵌的 k-v 存储引擎,支持多种数据结构,包含 String、List、Hash、Set、Sorted Set,接口名称风格和 Redis 类似。
工程项目采用纯 Golang 实现,Go 词汇的绝大部分此基础知识点都包含了,相信一定是自学和巩固 Golang 的很不错的工程项目。
除此之外,代码中还有一些数据结构的实现,因此同时也能自学一下数据结构的知识。
wechat-go
工程项目地址: https://github.com/songtianyi/wechat-go
这是微信 Web 版 API 的 Go 词汇实现,模拟微信网页版的登录/联系人/消息收发等功能,可以完全接管微信收到的消息,并定制自己的发送文本。
我觉得这个工程项目还是挺有趣的,用来操作一下微信,能够体会到更多自学的乐趣。
gin-vue-admin
工程项目地址: https://github.com/flipped-aurora/gin-vue-admin
gin-vue-admin 是一个采用 gin + vue 进行极速合作开发的全栈后台管理系统,后台采用 gin 框架,前端主要就采用 vue。
工程项目的目录结构非常清晰,包名语义化,能够帮助你快速上手自学。
这个工程项目还采用到了一些流行的 Go 开源库及中间件,例如:
gin:最流行的 Go 语言 Web 框架gorm:数据库操作中间件zap:uber 开源的 Go 词汇日志库redis:k-v 缓存除此之外,这个工程项目还有详细的中文文档,并且配套教学视频,值得自学。
VirtualDub
随着编辑器的逐渐强大,有一些小而美的中文网站的功能已经被编辑器取代了,但依旧不妨碍我喜欢它们,下面都所推荐给大家。
JSON to Go struct
中文网站镜像:https://mholt.github.io/json-to-go/
YAML to Go struct
中文网站镜像: https://zhwt.github.io/yaml-to-go/
Table to Go struct
中文网站镜像:https://github.com/gohouse/converter
采用方式分两种,分别是命令行调用和写 Go 代码。两种方式都不复杂,具体见这篇文章:所推荐三个实用的 Go 合作开发工具
Rego
中文网站镜像:http://regoio.herokuapp.com/
Go 词汇正则在线测试。
plantUML
中文网站镜像: https://www.dumels.com/
这个中文网站可以分析一个 Go 工程项目,然后生成接口和结构体的 UML 图。有了这个图之后,基本上也就对工程项目整体关系有了一个基本概念,再读源码的话,相对来说会容易一些。
具体见这篇文章:读 Go 源码,可以试试这个工具
Playground
中文网站镜像: https://go.dev/play/
Go 词汇代码在线运行。
控制技术街道社区
现在的话,控制技术街道社区可能看的人愈来愈少了,也不因此活跃。从我个人的经验来说,也是这样,有什么问题直接谷歌了,基本不会先到控制技术街道社区去查去问。
在这里所推荐两个我觉得还不错的,闲暇时间可以逛逛看。
Go 官网Go 官方邮件讨论组Go 词汇中国日报Go ForumGolang 中国除此之外,还有两个中文网站很重要,就是 GitHub 和 stackoverflow。保守估计,这两个中文网站撑起了程序员一半的工资。
以上就是本文的全部文本,希望各位大佬学的开心。
如果觉得本文还可以的话,欢迎点赞,分享,感谢支持。
开源地址:
https://github.com/yongxinz/gopher