# gopher **Repository Path**: tianbeibei/gopher ## Basic Information - **Project Name**: gopher - **Description**: Go 学习路线图,包括基础专栏,进阶专栏,源码阅读,实战开发,面试刷题,必读书单等一系列资源。 - **Primary Language**: Go - **License**: MIT - **Default Branch**: main - **Homepage**: https://github.com/yongxinz/gopher - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-09-02 - **Last Updated**: 2025-06-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README Go 学习路线图,包括基础专栏,进阶专栏,源码阅读,实战开发,面试刷题,必读书单等一系列资源。 关注公众号:**AlwaysBeta**,回复「goebook」即可获得 Go 编程必读书籍。
## Go 开发路线 ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/Go 学习路线.png) - [Go 学习路线(2022)](https://mp.weixin.qq.com/s/Dwf98JFUnRij0Ha7o3ZSHQ) ## 技术博客 ### 基础专栏 1. [Go 专栏|开发环境搭建以及开发工具 VS Code 配置](https://mp.weixin.qq.com/s/x1OW--3mwSTjgB2HaKGVVA) 2. [Go 专栏|变量和常量的声明与赋值](https://mp.weixin.qq.com/s/cIceTj02bGa0BYqu-JN1Bg) 3. [Go 专栏|基础数据类型:整数、浮点数、复数、布尔值和字符串](https://mp.weixin.qq.com/s/aotpxglSGRFfl6A1xPN-dw) 4. [Go 专栏|复合数据类型:数组和切片 slice](https://mp.weixin.qq.com/s/MnjIeJPUAA6n48o4yns3hg) 5. [Go 专栏|复合数据类型:字典 map 和 结构体 struct](https://mp.weixin.qq.com/s/1unl6K9xHxy4V3KukORC3A) 6. [Go 专栏|流程控制,一网打尽](https://mp.weixin.qq.com/s/TbjT1dmTvwiKCzzbWc23kA) 7. [Go 专栏|函数那些事](https://mp.weixin.qq.com/s/RKpyVrhtSk9pXMWNVpWYjQ) 8. [Go 专栏|错误处理:defer,panic 和 recover](https://mp.weixin.qq.com/s/qYZXfAifBxwl1cDDaP0FNA) 9. [Go 专栏|说说方法](https://mp.weixin.qq.com/s/qvFipY0pnmqxok6CVKquvg) 10. [Go 专栏|接口 interface](https://mp.weixin.qq.com/s/g7ngRIxxbd-M8K_sL_M4KQ) 11. [Go 专栏|并发编程:goroutine,channel 和 sync](https://mp.weixin.qq.com/s/VG4CSfT2OfxA6nfygWLSyw) ### 技术文章 - [使用 Go 语言实现二叉搜索树](https://mp.weixin.qq.com/s/2wYRmG_AiiHYjLDEXg94Ag) - [开源项目|Go 开发的一款分布式唯一 ID 生成系统](https://mp.weixin.qq.com/s/tCGYTlB4nJH1ClViFQJ6Cw) - [听说,99% 的 Go 程序员都被 defer 坑过](https://mp.weixin.qq.com/s/1T6Z74Wri27Ap8skeJiyWQ) - [测试小姐姐问我 gRPC 怎么用,我直接把这篇文章甩给了她](https://mp.weixin.qq.com/s/qdI2JqpMq6t2KN1byHaNCQ) - [gRPC,爆赞](https://mp.weixin.qq.com/s/1Xbca4Dv0akonAZerrChgA) - [使用 grpcurl 通过命令行访问 gRPC 服务](https://mp.weixin.qq.com/s/GShwcGCopXVmxCKnYf5FhA) - [推荐三个实用的 Go 开发工具](https://mp.weixin.qq.com/s/3GLMLhegB3wF5_62mpmePA) ### 源码剖析 - [Go 语言切片是如何扩容的?](https://mp.weixin.qq.com/s/VVM8nqs4mMGdFyCNJx16_g) - [读 Go 源码,可以试试这个工具](https://mp.weixin.qq.com/s/E2TL_kcbVcRJ0CnxwbXWLw) - [Go Error 嵌套到底是怎么实现的?](https://mp.weixin.qq.com/s/nWb-0RTDG1Pg5ZmJZfbEPA) - [为什么要避免在 Go 中使用 ioutil.ReadAll?](https://mp.weixin.qq.com/s/e2A3ME4vhOK2S3hLEJtPsw) - [如何在 Go 中将 []byte 转换为 io.Reader?](https://mp.weixin.qq.com/s/nFkob92GOs6Gp75pxA5wCQ) - [开始读 Go 源码了](https://mp.weixin.qq.com/s/iPM-mPOepRuDqkBtcnG1ww) ### 为什么go - [为什么说 Go 语言字符串是不可变的?](https://mp.weixin.qq.com/s/AOb6AjKwyTwLeAUou0AU-Q) - [为什么 Go for-range 的 value 值地址每次都一样?](https://mp.weixin.qq.com/s/OoJ42UVYe72492mRUGtdvA) - [为什么 Go 语言 struct 要使用 tags](https://mp.weixin.qq.com/s/L7-TJ-CzYfuVrIBWP7Ebaw) - [为什么 Go 不支持 []T 转换为 []interface](https://mp.weixin.qq.com/s/cwDEgnicK4jkuNpzulU2bw) - [为什么要避免在 Go 中使用 ioutil.ReadAll?](https://mp.weixin.qq.com/s/e2A3ME4vhOK2S3hLEJtPsw) ## 面试刷题 - [Go 语言 new 和 make 关键字的区别](https://mp.weixin.qq.com/s/NBDkI3roHgNgW1iW4e_6cA) - [Go 语言数组和切片的区别](https://mp.weixin.qq.com/s/esaAmAdmV4w3_qjtAzTr4A) - [Go 语言切片是如何扩容的?](https://mp.weixin.qq.com/s/VVM8nqs4mMGdFyCNJx16_g) - [为什么 Go for-range 的 value 值地址每次都一样?](https://mp.weixin.qq.com/s/OoJ42UVYe72492mRUGtdvA) - [Go 语言 map 如何顺序读取?](https://mp.weixin.qq.com/s/iScSgfpSE2y14GH7JNRJSA) - [Go 语言 map 是并发安全的吗?](https://mp.weixin.qq.com/s/4mDzMdMbunR_p94Du65QOA) - [Go 语言 select 都能做什么?](https://mp.weixin.qq.com/s/YyyMzYxMi8I4HEaxzy4c7g) - [Go 语言 context 都能做什么?](https://mp.weixin.qq.com/s/7IliODEUt3JpEuzL8K_sOg) - [为什么说 Go 语言字符串是不可变的?](https://mp.weixin.qq.com/s/AOb6AjKwyTwLeAUou0AU-Q) - [交替打印数字和字母](interview/q001.md) - [判断字符串中字符是否全都不同](interview/q002.md) - [翻转字符串](interview/q003.md) - [判断两个给定的字符串排序后是否一致](interview/q004.md) - [字符串替换问题](interview/q005.md) - [机器人坐标计算](interview/q006.md) - [语法题目一](interview/q007.md) - [语法题目二](interview/q008.md) - [goroutine和channel使用一](interview/q009.md) - [实现阻塞读的并发安全Map](interview/q010.md) - [高并发下的锁与map读写问题](interview/q011.md) - [定时与 panic 恢复](interview/q012.md) - [为 sync.WaitGroup 中Wait函数支持 WaitTimeout 功能.](interview/q013.md) - [七道语法找错题目](interview/q014.md) - [golang 并发题目测试](interview/q015.md) - [记一道字节跳动的算法面试题](interview/q016.md) - [多协程查询切片问题](interview/q017.md) - [对已经关闭的的chan进行读写,会怎么样?为什么?](interview/q018.md) - [简单聊聊内存逃逸?](interview/q019.md) - [字符串转成byte数组,会发生内存拷贝吗?](interview/q020.md) - [http包的内存泄漏](interview/q021.md) - [sync.Map 的用法](interview/q022.md) - [Go语言的GPM调度器是什么?](interview/go-gpm.md) - [Goroutine调度策略](interview/go-scheduler.md) - [goroutine调度器概述](interview/go-scheduler-base.md) ## 微服务 - [go-zero 是如何实现令牌桶限流的?](https://mp.weixin.qq.com/s/--AdUcwOQyP6r5W8ziVwUg) - [go-zero 是如何实现计数器限流的?](https://mp.weixin.qq.com/s/CTemkZ2aKPCPTuQiDJri0Q) - [go-zero 是如何做路由管理的?](https://mp.weixin.qq.com/s/uTJ1En-BXiLvH45xx0eFsA) ## 入门教程 ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/Go 入门教程.png) ### Go 语言中文网 - Go 语言入门教程 **网站链接:** http://c.biancheng.net/golang/ ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/biancheng.png) 这套 Go 语言教程通俗易懂,深入浅出,既适合没有基础的读者快速入门,也适合工作多年的程序员查阅知识点。 ### 菜鸟教程 - Go 语言教程 **网站链接:** https://www.runoob.com/go/go-tutorial.html ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/runoob.png) 这个网站就不需要多介绍了吧,很多编程语言的入门教程都可以在这里找到。平时写代码过程中,某个知识点忘了,也可以到这里查。 ### W3Cshcool - Go 教程 **网站链接:** https://www.w3cschool.cn/go/ ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/w3c.png) 也是一个综合性的编程入门教程网站,资料很多,也都很基础。 ### Go by Example **网站链接:** https://gobyexample.com/ ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/gobyexample.png) 很多代码示例,学习基础知识的时候很实用。可以一边看理论,一边参考这个网站写代码,效果会更好。 ### 地鼠文档 **网站链接:** https://www.topgoer.cn/ ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/topgoer.png) 可以说是 Go 编程的导航网站了,收藏了很多 Go 学习资料。包括网站,书籍,开源库,开源项目等。 ## 进阶教程 ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/Go 进阶教程.png) ### mojotv 博客 **网站链接:** https://mojotv.cn/ ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/mojitv.png) 很不错的博客,里面很多 Go 进阶文章,还有其他方面的技术文章,值得一读。我试图找了一下作者信息,但是没找到。 ### 煎鱼 - Go 语言设计哲学 **网站链接:** https://golang3.eddycjy.com/ ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/eddycjy.png) 煎鱼大佬的博客,结合官方资料和作者自己的理解,梳理出的一系列 Go 语言设计相关的理念和哲学的文章。 ### 面向信仰编程 - Go 语言设计与实现 **网站链接:** https://draveness.me/golang/ ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/draveness.png) 左神的博客,内容很深,想要成为大神的话,绝对要来看。 ### Go 夜读 **网站链接:** https://talkgo.org/ 这是一个由众多资深 Gopher 组织的开源项目,主要是对 Go 源码进行解读。并且坚持开源,将相关资源都上传到了 GitHub。 ## 书籍推荐 [百度云下载链接](https://pan.baidu.com/s/1kX_QBAEmJ7twIV56QVOkxQ) 密码:51fn 书单一共包含 10 本书,分为入门 5 本,进阶 5 本。我读过其中 7 本,另外 3 本虽然没读过,但也是网上推荐比较多的。 虽然分了入门和进阶,但是很多书中这两部分内容是都包含了的。大家看的时候可以根据自己的情况,先打好基础,再进行进阶。 有的书是开源的,可以直接在线阅读,有的有电子书,大家可以在这里 [GitHub](https://github.com/yongxinz/gopher) 找到下载方式。如果条件允许的话,买正版是最好的。 ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/Go 书籍推荐.png) ### 入门 #### 《Go语言趣学指南》 ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/gobook-1.png) 本书是一本面向 Go 语言初学者的书,内容也比较浅,非常适合入门。 书中循序渐进地介绍了使用 Go 语言必需知道的知识,展示了非常多生动有趣的例子,并通过提供大量练习来加深读者对书中所述内容的理解。 #### 《Go 入门指南》 这本书的英文名称叫《The Way to Go》,作者利用业余时间来进行翻译工作。在取得原作者 Ivo Balbaert 授权的情况下,将其开源。 **在线阅读:** https://github.com/Unknwon/the-way-to-go_ZH_CN #### 《Go 语言编程》 ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/gobook-2.png) 本书以介绍 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 语言程序设计》 ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/gobook-3.png) 本书由作者 Kernighan 和谷歌公司 Go 团队主管 Alan Donovan 联袂撰写,是学习 Go 语言的指南级书籍。内容翔实全面,涵盖了全部基础内容,值得一读。 ### 进阶 #### 《Go 语言实战》 ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/gobook-4.png) 相比于其他技术书籍,这本书很薄。显然,这不是面面俱到,涵盖所有知识点的一本书,但它直击要点。 我在阅读过程中,最大的感受就是,很多看基础知识过程中碰到的,又很难通过搜索引擎找到答案的问题,在这里获得了解答。 #### 《Go Web 编程》 ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/gobook-5.png) 学语言不是目的,能够使用这门语言来干活并挣到钱,才是目的。因此,不得不学一下 Go 在 Web 编程方面的应用。 这本书是由黄健宏翻译的,这位译者,还著有《Redis 设计与实现》一书,书中深入浅出地分析了 Redis 所用的数据结构和设计思想,属实优秀。 #### 《Go 语言高级编程》 ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/gobook-6.png) 涵盖 CGO、Go 汇编、RPC 实现、Web 框架、分布式系统等高阶主题。书中章节之间没有很强的关联性,每个章节都是独立的知识,完全可以按需阅读。 **在线阅读:** https://github.com/chai2010/advanced-go-programming-book #### 《Go 语言学习笔记》 ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/gobook-7.png) 作者是雨痕大佬,2015 年第一届 GopherChina 大会讲师。 本书分上下两卷: 上卷细致解析了语言规范相关细节,便于读者深入理解语言相关功能的使用方法和注意事项。 下卷则对运行时源码做出深度剖析,引导读者透彻了解语言功能背后的支持环境和运行体系,诸如内存分配、垃圾回收和并发调度等。本书不适合编程初学入门,可供有实际编程经验或正在使用 Go 工作的人群参考。 #### 《Go 语言底层原理剖析》 ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/gobook-8.png) 本书使用浅显易懂的语言与大量图片深入介绍了 Go 语言编译时、类型系统、语法特性、函数调用规范、并发编程、内存管理与垃圾回收、运行状态监控等模块的使用方法和底层原理。 对于想要了解 Go 底层原理,阅读源码的同学来说,可以阅读此书,但想要完全理解书中的内容,并不是一件容易的事。 ### 书单汇总 1. 《Go 程序设计语言》--- 艾伦A.A.多诺万、布莱恩W.柯尼汉 2. 《Go 语言编程》--- 许式伟 3. 《Go 语言实战》--- 威廉·肯尼迪、布莱恩·克特森、埃里克·圣马丁 4. 《Go 语言核心编程》--- 李文塔 5. 《Go 语言学习笔记》--- 雨痕 6. 《Go 编程并发实战》--- 郝林 7. [《Go入门指南》](https://github.com/Unknwon/the-way-to-go_ZH_CN) 8. [《Go语言标准库》](https://github.com/polaris1119/The-Golang-Standard-Library-by-Example) 9. [《Go Web 编程》](https://github.com/astaxie/build-web-application-with-golang) 10. [《Go语言博客实践》](https://github.com/achun/Go-Blog-In-Action) 11. [《Go语言学习笔记》](https://github.com/qyuhen/book) 12. [《Go语言高级编程》](https://chai2010.cn/advanced-go-programming-book/) 13. [《Effective Go》](https://golang.org/doc/effective_go.html) 14. [《Learning Go》](https://github.com/miekg/gobook)英文版 => [《Learning Go》](https://github.com/mikespook/Learning-Go-zh-cn) 中文版 15. [《Go 命令教程》](https://github.com/hyper-carrot/go_command_tutorial) 16. [《Network programming with Go》](http://jan.newmarch.name/go/) => [中文版](https://github.com/astaxie/NPWG_zh) 17. [《Practical Cryptography With Go》](https://leanpub.com/gocrypto/read#leanpub-auto-select-bibliography) 18. [《An Introduction to Programming in Go》](http://www.golang-book.com/) 19. [《Go Bootcamp》](http://www.golangbootcamp.com/book) 20. [《Mastering Concurrency in Go》](https://www.packtpub.com/application-development/mastering-concurrency-go) July 2014 Nathan Kozyra 21. [《Go Programming Blueprints》](https://www.packtpub.com/application-development/go-programming-blueprints) January 23,2015 22. [《The Go Programming Language》](http://www.gopl.io/) Published Oct 30, 2015,Not Yet Published 23. [《Practical Go: Real world advice for writing maintainable Go programs》](https://dave.cheney.net/practical-go/presentations/qcon-china.html) 24. [《Go 语言圣经(中文版)》](https://books.mlog.club/gopl/) 25. [《Go 语言并发编程》](https://books.mlog.club/go-concurrency-programming/) 26. [《深入解析 Go》](https://books.mlog.club/go-internals/zh/) ## Web 开发 Go 是一种开源编程语言,可以轻松构建简单、可靠和高效的软件。也正因为它简单、可靠、高效的特性,在使用 Go 语言开发 Web 应用时有以下的优势: 1. 更简单 2. 更强的编译能力 3. 更高的性能 4. 良好的 IDE 支持和调试功能 5. 语法简单易上手 下面介绍 5 个开源 Web 框架,选择它们的标准是:在 GitHub 上 star 多,维护积极,被使用的多并且查找资料方便。 ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/Go Web 开发.png) ### 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 个项目,整体上来说,代码量不是很大,难度也适中。而且不同项目可以学习到不同的技术点,大家可以选择自己感兴趣的来尝试。 ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/Go 练手项目.png) ### 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 缓存 除此之外,这个项目还有详细的中文文档,并且配套教学视频,值得学习。 ## 实用工具 随着编辑器的逐渐强大,有一些小而美的网站的功能已经被编辑器取代了,但依旧不妨碍我喜欢它们,下面都推荐给大家。 ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/Go 实用工具.png) ### 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 开发工具](https://mp.weixin.qq.com/s/3GLMLhegB3wF5_62mpmePA) ### Rego **网站链接:** http://regoio.herokuapp.com/ ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/rego.png) Go 语言正则在线测试。 ### plantUML **网站链接:** https://www.dumels.com/ ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/dumels-2.png) 这个网站可以分析一个 Go 项目,然后生成接口和结构体的 UML 图。有了这个图之后,基本上也就对项目整体关系有了一个基本概念,再读源码的话,相对来说会容易一些。 具体见这篇文章:[读 Go 源码,可以试试这个工具](https://mp.weixin.qq.com/s/E2TL_kcbVcRJ0CnxwbXWLw) ### Playground **网站链接:** https://go.dev/play/ ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/playground.png) Go 语言代码在线运行。 ## 技术社区 现在的话,技术社区可能看的人越来越少了,也不那么活跃。从我个人的经验来说,也是这样,有什么问题直接谷歌了,基本不会先到技术社区去查去问。 ![](https://cdn.jsdelivr.net/gh/yongxinz/picb@main/data/Go 技术社区.png) 在这里推荐几个我觉得还不错的,闲暇时间可以逛逛看。 - [Go 官网](https://go.dev/) - [Go 官方邮件讨论组](https://groups.google.com/g/golang-nuts) - [Go 语言中文网](https://studygolang.com/) - [Go Forum](https://forum.golangbridge.org/) - [Golang 中国](https://golangtc.com/) ## 资料汇总 - 文档: - [Go Code Review Comments](https://code.google.com/p/go-wiki/wiki/CodeReviewComments):Go 语言代码风格指导 - [Go Code Convention](https://github.com/Unknwon/go-code-convention):无闻的 Go 语言编码规范 - [Uber Go Guide](https://github.com/xxjwxc/uber_go_guide_cn): Uber Go 语言编码规范 - [GopherCon 2014](https://github.com/gophercon/2014-talks) - [GopherCon 2015](https://github.com/gophercon/2015-talks) - [GopherCon 2016](https://github.com/gophercon/2016-talks) - [GopherCon 2017](https://github.com/gophercon/2017-talks) - [Go 项目标准布局](https://github.com/golang-standards/project-layout/blob/master/README_zh-CN.md) - 学习站点: - [Go by Example](https://gobyexample.com/) - [Go database/sql tutorial](http://go-database-sql.org/) - [标准库代码示例](https://github.com/astaxie/gopkg) - [Go 语言标准库](https://books.studygolang.com/The-Golang-Standard-Library-by-Example/) - [https://github.com/Alikhll/golang-developer-roadmap](https://github.com/Alikhll/golang-developer-roadmap) ## Go 项目 & 库 - Web 框架: - [Macaron](https://go-macaron.com/):模块化 Web 框架 - [Beego](http://beego.me/):重量级 Web 框架 - [Revel](https://github.com/revel/revel):较早成熟的重量级 Web 框架 - [Martini](https://github.com/go-martini/martini): 一个强大为了编写模块化 Web 应用而生的 Go 语言框架 - [Echo](https://echo.labstack.com/): 功能模块齐全, 上手容易, 文档示例齐全 - [Gin](https://github.com/gin-gonic/gin):轻量级 HTTP Web 框架 - [Iris](https://github.com/kataras/iris):Iris 是基于 Go 编写的一个快速,简单但功能齐全且非常高效的 Web 框架 - ORM 以及数据库驱动: - [xorm](https://github.com/go-xorm/xorm):支持 MySQL、PostgreSQL、SQLite3 以及 MsSQL - [mgo](http://labix.org/mgo):MongoDB 官方推荐驱动 - [gorm](https://github.com/jinzhu/gorm): 全功能 ORM (无限接近) 支持 MySQL、PostgreSQL、SQLite3 以及 MsSQL - [gosql](https://github.com/rushteam/gosql): gosql 一款全新ORM go-style风格、轻量、简单、强大 支持 MySQL - [redigo](https://github.com/gomodule/redigo): Redigo is a Go client for the Redis database. - [TiDB](https://github.com/pingcap/tidb): is an open-source NewSQL database that supports Hybrid Transactional and Analytical Processing (HTAP) workloads - 实用库: - [converter](https://github.com/gohouse/converter): a lib for golang, generate mysql table schema to golang struct - [validator](https://github.com/go-playground/validator): Package validator implements value validations for structs and individual fields based on tags. - [cron](https://github.com/robfig/cron): a cron library for go - [amqp](https://github.com/streadway/amqp): This is an AMQP 0.9.1 client with RabbitMQ extensions in Go. - [cli](https://github.com/urfave/cli): cli is a simple, fast, and fun package for building command line apps in Go. - [viper](https://github.com/spf13/viper): Viper is a complete configuration solution for Go applications including 12-Factor apps. - [ants](https://github.com/panjf2000/ants): ants 是一个高性能的 goroutine 池,实现了对大规模 goroutine 的调度管理、goroutine 复用,允许使用者在开发并发程序的时候限制 goroutine 数量,复用资源,达到更高效执行任务的效果。 - [cel-go](https://github.com/google/cel-go): Fast, portable, non-Turing complete expression evaluation with gradual typing (Go) - 其他: - [kratos](https://github.com/go-kratos/kratos): 一套轻量级 Go 微服务框架,包含大量微服务相关功能及工具。 - [pocassist](https://github.com/jweny/pocassist): 一个 Golang 编写的全新开源漏洞测试框架。 ## 视频资料 - 基础: - Go Slices and Bytes - Shakeel Mahate:[Youtube](http://www.youtube.com/watch?v=dKlNSIUSfz0) - COSCUP 2013: - Golang & ORM - 林佑安:[Youtube](http://www.youtube.com/watch?v=VwAtYGyjTks) - GopherCon: - 2014:[Youtube](https://www.youtube.com/playlist?list=PL2ntRZ1ySWBcD_BiJiDJUcyrb2w3bTulF) - 2015:[Youtube](https://www.youtube.com/playlist?list=PL2ntRZ1ySWBf-_z-gHCOR2N156Nw930Hm) - 2016:[Youtube](https://www.youtube.com/playlist?list=PL2ntRZ1ySWBdliXelGAItjzTMxy2WQh0P) - 2017:[Youtube](https://www.youtube.com/playlist?list=PL2ntRZ1ySWBdD9bru6IR-_WXUgJqvrtx9) - 2018:[Youtube](https://www.youtube.com/playlist?list=PL2ntRZ1ySWBdatAqf-2_125H4sGzaWngM) - 2019:[Youtube](https://www.youtube.com/playlist?list=PL2ntRZ1ySWBdDyspRTNBIKES1Y-P__59_) - Golang UK Conference: - 2015:[Youtube](https://www.youtube.com/playlist?list=PLDWZ5uzn69ezRJYeWxYNRMYebvf8DerHd) - 2016:[Youtube](https://www.youtube.com/playlist?list=PLDWZ5uzn69eyh791ZTkEA9OaTxVpGY8_g) - 2017:[Youtube](https://www.youtube.com/playlist?list=PLDWZ5uzn69eyM81omhIZLzvRhTOXvpeX9) - 2018:[Youtube](https://www.youtube.com/playlist?list=PLDWZ5uzn69ewsMyuGjVsAnpQIjyud1Cv9) - 2019:[Youtube](https://www.youtube.com/playlist?list=PLDWZ5uzn69ezokLCB-nGgYInxL0uP1PeZ) - GopherCon India 2015: [Youtube](https://www.youtube.com/playlist?list=PLxFC1MYuNgJTY3uQ5Ja4F5Sz305nnrBOq) ## 免责声明 文中分享书籍全部来源于网络其他人的整理,这里只是收集整理了他们的链接,如有侵权,马上联系我,我立马删除对应链接。