进阶
《Go 语言实战》
相比于其他技术书籍,这本书很薄。显然,这不是面面俱到,涵盖所有知识点的一本书,但它直击要点。
我在阅读过程中,最大的感受就是,很多看基础知识过程中碰到的,又很难通过搜索引擎找到答案的问题,在这里获得了解答。
《Go Web 编程》
学语言不是目的,能够使用这门语言来干活并挣到钱,才是目的。因此,不得不学一下 Go 在 Web 编程方面的应用。
这本书是由黄健宏翻译的,这位译者,还著有《Redis 设计与实现》一书,书中深入浅出地分析了 Redis 所用的数据结构和设计思想,属实优秀。
《Go 语言高级编程》
涵盖 CGO、Go 汇编、RPC 实现、Web 框架、分布式系统等高阶主题。书中章节之间没有很强的关联性,每个章节都是独立的知识,完全可以按需阅读。
《Go 语言学习笔记》
作者是雨痕大佬,2015 年第一届 GopherChina 大会讲师。
本书分上下两卷:
上卷细致解析了语言规范相关细节,便于读者深入理解语言相关功能的使用方法和注意事项。
下卷则对运行时源码做出深度剖析,引导读者透彻了解语言功能背后的支持环境和运行体系,诸如内存分配、垃圾回收和并发调度等。本书不适合编程初学入门,可供有实际编程经验或正在使用 Go 工作的人群参考。
《Go 语言底层原理剖析》
本书使用浅显易懂的语言与大量图片深入介绍了 Go 语言编译时、类型系统、语法特性、函数调用规范、并发编程、内存管理与垃圾回收、运行状态监控等模块的使用方法和底层原理。
对于想要了解 Go 底层原理,阅读源码的同学来说,可以阅读此书,但想要完全理解书中的内容,并不是一件容易的事。
Web 开发
Go 是一种开源编程语言,可以轻松构建简单、可靠和高效的软件。也正因为它简单、可靠、高效的特性,在使用 Go 语言开发 Web 应用时有以下的优势:
- 更简单
- 更强的编译能力
- 更高的性能
- 良好的 IDE 支持和调试功能
- 语法简单易上手
下面介绍 5 个开源 Web 框架,选择它们的标准是:在 GitHub 上 star 多,维护积极,被使用的多并且查找资料方便。
Gin
一个完全由 Go 语言编写而成的 HTTP Web 框架,提供了一个速度更快的、性能更高的 Go 语言 Web 开发框架。
这个框架对于初学者来说很容易上手,而且在 Web 框架中,star 是最多的,使用的人也非常多。
Beego
Beego 是一款由 Go 语言开发专家 Asta谢 开发的一款简单易用的企业级 Go 应用开发框架,具备全中文的官方网站和教程。
不同于其他框架语言,Beego 不仅仅提供图文教程,还提供了视频教程,这一点对国内的开发人员来讲是非常友好的。
Iris
Iris 框架在其官方网站上被描述为 Go 开发中最快的 Web 框架,并给出了多框架和多语言之间的性能对比。
如果你正在选择一款性能不错、轻量级且简单易上手的 Go 语言 Web 开发框架,Iris 是一个不错的选择。
Echo
Echo 是个快速的 HTTP 路由器(零动态内存分配),也是 Go 的微型 Web 框架。
其具备快速 HTTP 路由器、支持扩展中间件,同时还支持静态文件服务、WebSocket 以及支持制定绑定函数、制定相应渲染函数,并允许使用任意的 HTML 模版引擎。
GoFrame
项目地址:github.com/gogf/gf
GoFrame 是一款模块化、高性能、企业级的 Go 基础开发框架。GoFrame 不是一款 WEB/RPC 框架,而是一款通用性的基础开发框架,是 Golang 标准库的一个增强扩展级,包含通用核心的基础开发组件。
优点是实战化、模块化、文档全面、模块丰富、易用性高、通用性强、面向团队。
总体来说,这个项目具有完善的中文文档和周边开发库,活跃的 issue 讨论区,项目模块化设计很好。
这 5 个开源项目各有优劣,有的已经被市场验证,使用广泛;有的作为后起之秀,发展迅速。
大家可以挑选自己感兴趣的来学习和使用。
练手项目
学完了理论,接下来就是实战,开始做项目。除了 Web 开发之外,还有很多方向可以选择,比如 db,cache,im 等等。而且作为练手项目,不能太复杂,否则根本看不懂,反而打击信心,起不到锻炼的效果。
这里我选择了 5 个项目,整体上来说,代码量不是很大,难度也适中。而且不同项目可以学习到不同的技术点,大家可以选择自己感兴趣的来尝试。
id-maker
Go 开发的一款分布式唯一 ID 生成系统。
代码量少,项目整体难度小,通过这个项目可以学习到 httpServer,gRPC 相关知识。
cache2go
比较简单的一个缓存库,代码量很少,适合新手学习。通过这个项目可以学习到锁、goroutine 等知识。
rosedb
rosedb 是一个稳定、高性能、快速、内嵌的 k-v 存储引擎,支持多种数据结构,包含 String、List、Hash、Set、Sorted Set,接口名称风格和 Redis 类似。
项目使用纯 Golang 实现,Go 语言的绝大部分基础知识点都包含了,相信一定是学习和巩固 Golang 的很不错的项目。
除此之外,代码中还有一些数据结构的实现,所以同时也能学习一下数据结构的知识。
wechat-go
这是微信 Web 版 API 的 Go 语言实现,模拟微信网页版的登录/联系人/消息收发等功能,可以完全接管微信收到的消息,并定制自己的发送内容。
我觉得这个项目还是挺有趣的,用来操作一下微信,能够体会到更多学习的乐趣。
gin-vue-admin
gin-vue-admin 是一个使用 gin + vue 进行极速开发的全栈后台管理系统,后台使用 gin 框架,前端主要使用 vue。
项目的目录结构非常清晰,包名语义化,能够帮助你快速上手学习。
这个项目还使用到了一些流行的 Go 开源库及中间件,例如:
- gin:最流行的 Go 语言 Web 框架
- gorm:数据库操作中间件
- zap:uber 开源的 Go 语言日志库
- redis:k-v 缓存
除此之外,这个项目还有详细的中文文档,并且配套教学视频,值得学习。
实用工具
随着编辑器的逐渐强大,有一些小而美的网站的功能已经被编辑器取代了,但依旧不妨碍我喜欢它们,下面都推荐给大家。
JSON to Go struct
网站链接:mholt.github.io/json-to-go/
YAML to Go struct
网站链接:zhwt.github.io/yaml-to-go/
Table to Go struct
使用方式分两种,分别是命令行调用和写 Go 代码。两种方式都不复杂,具体见这篇文章:推荐三个实用的 Go 开发工具
Rego
Go 语言正则在线测试。
plantUML
网站链接:www.dumels.com/
这个网站可以分析一个 Go 项目,然后生成接口和结构体的 UML 图。有了这个图之后,基本上也就对项目整体关系有了一个基本概念,再读源码的话,相对来说会容易一些。
具体见这篇文章:读 Go 源码,可以试试这个工具
Playground
网站链接:go.dev/play/
Go 语言代码在线运行。
技术社区
现在的话,技术社区可能看的人越来越少了,也不那么活跃。从我个人的经验来说,也是这样,有什么问题直接谷歌了,基本不会先到技术社区去查去问。
在这里推荐几个我觉得还不错的,闲暇时间可以逛逛看。
除此之外,还有两个网站很重要,就是 GitHub 和 stackoverflow。保守估计,这两个网站撑起了程序员一半的工资。
以上就是本文的全部内容,希望各位大佬学的开心。