建议你花 5 钟读完这篇文章,可以帮你节省100% 的寻找答案的时间,一定要坚持读到最后。
收藏的知友记得点个赞,大叔花了不少时间搜集整理,让好东西值得更多人看到。
Go 语言学习路线
路线图1:
路线图 2
Go 语言电子书推荐
Go语言圣经:提取码:7emu
Go语言实战:提取码:f7o2
Go语言学习笔记:提取码:7il3
Go 语言开源项目推荐
1. GoGuide
「Go语言学习指南」一份涵盖大部分 Golang 程序员所需要掌握的核心知识,拥有 Go语言教程、Go开源书籍、Go语言入门教程、Go语言学习路线。零基础学习 Go语言、Go编程,首选 GoGuide。
推荐指数:10.0
2. go-ast-book
《Go语法树入门——开启自制编程语言和编译器之旅》(开源免费图书/Go语言进阶/掌握抽象语法树/Go语言AST/凹语言)
推荐指数:10.0
3. golang
《Golang修养之路》本书针对Golang专题性热门技术深入理解,修养在Golang领域深入话题,脱胎换骨。
推荐指数:10.0
4. LeetCode-Go
LeetCode by Go 的解决方案,100% 的测试覆盖率,runtime beats 100% / LeetCode 题解
推荐指数:10.0
5. go
Go 编程语言官方开源项目,92.8K Star,学习 Go 语言必备。
推荐指数:10.0
6. 7days-golang
7天从零开始的golang程序(web框架Gee、分布式缓存GeeCache、对象关系映射ORM框架GeeORM、rpc框架GeeRPC等)7天用系列Go开始写/从零实现,非常值得进阶学习。
推荐指数:10.0
7.gf-vue-admin
基于goframe+vite+vue3搭建的开发基础平台,集成jwt鉴权,权限管理,动态路由,分页封装,多点登录拦截,资源权限,上传下载,代码生成器,表单生成器等开发必备功能,五分钟一套CURD前后端代码
推荐指数:10.0
8. goweb
Golang写的程序员网址导航,特别适合学习
主要技术栈:
- go iris 网页 / go gin 接口
- go-micro (内置gRPC)微服务框架
- consul 服务注册发现
- 分组路由
- 中间件实现授权访问
- redis 管理登陆会话
- 日志错误管理
- ORM 框架引入 gorp
- 图片上传,google.uuid 生成文件名
- 使用 Go Module 方式开发
推荐指数:10.0
9. zinx
目前zinx已经在很多企业进行开发使用,具体使用领域包括:后端模块的消息中转、长链接游戏服务器、Web框架中的消息处理插件等。zinx的定位是代码简洁,让更多的开发者迅速的了解框架的内脏细节并且可以快速基于zinx DIY(二次开发)一款适合自己企业场景的模块。
推荐指数:10.0
10. pan-light
网盘不限速客户端, golang + qt5, 跨平台图形界面,pan-light 是一款不限速的网盘客户端, 基于 golang + Qt5 开发. 本项意义在于探究 golang 在图形界面客户端; web 服务端; 事件调度, websocket, p2p 长连接 等方面的应用和实践.
Go语言学习导航
网站中含有 GO 语言开源图书、Go语言开发工具、Go语言入门教程、Go语言进阶教程、Go语言官方资源、Go语言 Web 框架、Go语言微服务资源、Go语言领域大牛。
Go书籍离线阅读:
01 Go Web 编程
02 Go 并发实战
03 GoGuide - Go 语言保姆级教程
04 Go语言编程
05 The Way To Go
07 Go语言实战
08 Go语言学习笔记
09 Go语言标准库
Go书籍在线阅读:
这本书适合对 Go 底层的东西比较感兴趣的朋友阅读,也是作者抽空写的一本开源的书籍《深入解析Go》。写这本书不表示我能力很强,而是我愿意分享,和大家一起分享对Go语言的内部实现的一些研究。作者一直认为知识是用来分享的,让更多的人分享自己拥有的一切知识这个才是人生最大的快乐。
这本书适合有Go语言基础的朋友阅读,没有任何基础的建议不要阅读学习,建议去 GitHub 阅读 GoGuide开源项目,有编程基础的可以通过这本书进阶学习 Go。
这是作者在完成阅读这本名叫 《The Way to Go》 之后,决定每天抽出一点时间来进行翻译的工作,并且以开源的形式免费分享给有需要的 Go 语言爱好者,适合初学者学习。
这是 Go语言标准库,学习 Go 语言首选。
这本书适合学习完成Go语言基础+前端基础的朋友去学习进阶Go-Web 相关的知识。
中文名Go语言博客实践. 是对TypePress开发过程中的想法, 方法, 探讨等任何方面同步整理成的电子书。
这本书主要是作者记录学习Go语言的笔记,适合初学者学习。
本书涵盖 CGO、Go 汇编语言、RPC 实现、Web 框架实现、分布式系统等高阶主题,针对Go语言有一定经验想深入了解Go语言各种高级用法的开发人员。对于刚学习 Go 语言的读者,建议去学习Go语言开源项目 GoGuide。
这是一本英文版的Go语言书籍,建议你有英语基础再去阅读。
《The Way to Go》中文译本,中文正式名《Go 入门指南》
Go 语言精华文章系列
Golang的优势
- 它是一种简单的编译型编程语言。
- Go 是多才多艺、灵活且非常易于使用的。
- Go 可以轻松扩展并且具有时间效率。
- 它有一个内置的并发机制。
- 轻松检测未使用的变量,并具有用于静态分析的工具。
Go 的缺点
- 手动内存管理是有缺陷的。
- 没有多少库,因为这是一种最近的语言。
- 包括指针运算等低级功能。
- Go 在使用这些工具时有很多限制,并且很难处理错误。
Rust 和 Golang,两者都擅长他们的服务。但是,在以下情况下选择 Rust 而不是 Go,
- 您的首要任务是性能。
- 你宁愿拥有一个安全的记忆而不是一个简单的记忆。
- 您希望在编程时进行细粒度控制,而不是线程。
- 运行时的正确性对您来说比编译时的速度更重要。
- 您喜欢在硬件级别编写的程序。
Go语言 适用场景
经过前文关于 Golang 各个维度的讨论,我们可以得出结论:Go 语言并不是后端开发的万能药。在实际开发工作中,开发者应该避免在任何情况下无脑使用 Golang 作为后端开发语言。相反,工程师在决定技术选型之前应该全面了解候选技术(语言、框架或架构)的方方面面,包括候选技术与业务需求的切合度,与开发团队的融合度,以及其学习、开发、时间成本等因素。笔者在学习了包括前后端的一些编程语言之后,发现它们各自有各自的优势,也有相应的劣势。如果一门编程语言能广为人知,那它绝对不会是一门糟糕语言。因此,笔者不会断言 “XXX 是世界上最好的语言“,而是给读者分享个人关于特定应用场景下技术选型的思路。当然,本文是针对 Go 语言的技术文,接下来笔者将分享一下个人认为 Golang 最适合的应用场景。
分布式应用
Golang 是非常适合在分布式应用场景下开发的。分布式应用的主要目的是尽可能多的利用计算资源和网络带宽,以求最大化系统的整体性能和效率,其中重要的需求功能就是并发(Concurrency)。而 Go 是支持高并发和异步编程方面的佼佼者。
前面已经提到,Go 语言内置了协程(Goroutine)和通道(Channel)两大并发特性,这使后端开发者进行异步编程变得非常容易。Golang 中还内置了sync 库,包含 Mutex(互斥锁)、WaitGroup(等待组)、Pool(临时对象池)等接口,帮助开发者在并发编程中能更安全的掌控 Go 程序的并发行为。Golang 还有很多分布式应用开发工具,例如分布式储存系统(Etcd、SeaweedFS)、RPC 库(gRPC、Thrift)、主流数据库 SDK(mongo-driver、gnorm、redigo)等。这些都可以帮助开发者有效的构建分布式应用。
网络爬虫
稍微了解网络爬虫的开发者应该会听说过 Scrapy,再不济也是 Python。市面上关于 Python 网络爬虫的技术书籍数不胜数,例如崔庆才的《Python 3 网络开发实战》和韦世东的《Python 3 网络爬虫宝典》。用 Python 编写的高性能爬虫框架 Scrapy,自发布以来一直是爬虫工程师的首选。
不过,由于近期 Go 语言的迅速发展,越来越多的爬虫工程师注意到用 Golang 开发网路爬虫的巨大优势。其中,用 Go 语言编写的 Colly 爬虫框架,如今在 Github 上已经有 13k+ 标星。其简洁的 API 以及高效的采集速度,吸引了很多爬虫工程师,占据了爬虫界一哥 Scrapy 的部分份额。前面已经提到,Go 语言内置的并发特性让严重依赖网络带宽的爬虫程序更加高效,很大的提高了数据采集效率。另外,Go 语言作为静态语言,相对于动态语言 Python 来说有更好的约束下,因此健壮性和稳定性都更好。
后端 API
Golang 有很多优秀的后端框架,它们大部分都非常完备的支持了现代后端系统的各种功能需求:RESTful API、路由、中间件、配置、鉴权等模块。而且用 Golang 写的后端应用性能很高,通常有非常快的响应速度。笔者曾经在开源爬虫管理平台 Crawlab 中用 Golang 重构了 Python 的后端 API,响应速度从之前的几百毫秒优化到了几十毫秒甚至是几毫秒,用实践证明 Go 语言在后端性能方面全面碾压动态语言。Go 语言中比较知名的后端框架有 Gin、Beego、Echo、Iris。
当然,这里并不是说用 Golang 写后端就完全是一个正确的选择。笔者在工作中会用到 Java 和 C#,用了各自的主流框架(SpringBoot 和 .Net Core)之后,发现这两门传统 OOP 语言虽然语法啰嗦,但它们的语法特性很丰富,特别是泛型,能够轻松应对一些逻辑复杂、重复性高的业务需求。因此,笔者认为在考虑用 Go 来编写后端 API 时候,可以提前调研一下 Java 或 C#,它们在写后端业务功能方面做得非常棒。
Go 语言视频教程
Go 语言开源类库
Web 框架
业务框架
项目骨架
Go 语言开发建议
interface{}unsafepanic()
Go语言编码风格
使用 Go 的主要行业
根据, Go 程序员主要从事 IT 服务,其次是 金融和金融科技,云计算 / 云平台, 和其他行业。
专家分析
金融和金融科技。这是我所希望看到的,据我所知已经有相当多的银行已经采用或正在使用 Go 语言开发的基础架构。例如,英国的 Monzo 使用 Go 构建了他们的整个银行系统。云计算和云平台的情况也很合理,因为很多种应用程序都是以 Go 编写的。
移动开发,这是意料之外的。Go 并没有良好的移动开发的历史。如果有,我想人们有可能会用 Go 为移动应用制作 Web 服务或后端,但也仅此而已。
有几个行业我预计 Go 的使用率不会在短期内出现增长。例如那些基于机器学习的领域,那是 Python 的强项。Go 中的机器学习也在朝着更普及、更优良的方向前进,但我认为至少还要几年才能真正看到成果。
最后,如果觉得大叔的分享对你有帮助,欢迎关注我