Go 学习路线(2022) (二)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: Go 学习路线(2022) (二)

进阶


《Go 语言实战》


357c5166bfb349d2acbede60101956ac~tplv-k3u1fbpfcp-zoom-in-crop-mark 1304 0 0 0.png

相比于其他技术书籍,这本书很薄。显然,这不是面面俱到,涵盖所有知识点的一本书,但它直击要点。


我在阅读过程中,最大的感受就是,很多看基础知识过程中碰到的,又很难通过搜索引擎找到答案的问题,在这里获得了解答。


《Go Web 编程》


f9730a61cdd4408fa77c6454bd640317~tplv-k3u1fbpfcp-zoom-in-crop-mark 1304 0 0 0.png


学语言不是目的,能够使用这门语言来干活并挣到钱,才是目的。因此,不得不学一下 Go 在 Web 编程方面的应用。


这本书是由黄健宏翻译的,这位译者,还著有《Redis 设计与实现》一书,书中深入浅出地分析了 Redis 所用的数据结构和设计思想,属实优秀。


《Go 语言高级编程》


2c86d78d5725555555555555555.png


涵盖 CGO、Go 汇编、RPC 实现、Web 框架、分布式系统等高阶主题。书中章节之间没有很强的关联性,每个章节都是独立的知识,完全可以按需阅读。


在线阅读:github.com/chai2010/ad…


《Go 语言学习笔记》


da2d39df012b42a8a7d4936e85832b1e~tplv-k3u1fbpfcp-zoom-in-crop-mark 1304 0 0 0.png

作者是雨痕大佬,2015 年第一届 GopherChina 大会讲师。


本书分上下两卷:


上卷细致解析了语言规范相关细节,便于读者深入理解语言相关功能的使用方法和注意事项。


下卷则对运行时源码做出深度剖析,引导读者透彻了解语言功能背后的支持环境和运行体系,诸如内存分配、垃圾回收和并发调度等。本书不适合编程初学入门,可供有实际编程经验或正在使用 Go 工作的人群参考。


《Go 语言底层原理剖析》


3494dff82d674cce99cfeeb691e48927~tplv-k3u1fbpfcp-zoom-in-crop-mark 1304 0 0 0.png

本书使用浅显易懂的语言与大量图片深入介绍了 Go 语言编译时、类型系统、语法特性、函数调用规范、并发编程、内存管理与垃圾回收、运行状态监控等模块的使用方法和底层原理。


对于想要了解 Go 底层原理,阅读源码的同学来说,可以阅读此书,但想要完全理解书中的内容,并不是一件容易的事。


Web 开发


Go 是一种开源编程语言,可以轻松构建简单、可靠和高效的软件。也正因为它简单、可靠、高效的特性,在使用 Go 语言开发 Web 应用时有以下的优势:


  1. 更简单
  2. 更强的编译能力
  3. 更高的性能
  4. 良好的 IDE 支持和调试功能
  5. 语法简单易上手


下面介绍 5 个开源 Web 框架,选择它们的标准是:在 GitHub 上 star 多,维护积极,被使用的多并且查找资料方便。


Go Web 开发.png

Gin


项目地址:github.com/gin-gonic/g…


一个完全由 Go 语言编写而成的 HTTP Web 框架,提供了一个速度更快的、性能更高的 Go 语言 Web 开发框架。


这个框架对于初学者来说很容易上手,而且在 Web 框架中,star 是最多的,使用的人也非常多。


Beego


项目地址:github.com/beego/beego


Beego 是一款由 Go 语言开发专家 Asta谢 开发的一款简单易用的企业级 Go 应用开发框架,具备全中文的官方网站和教程。


不同于其他框架语言,Beego 不仅仅提供图文教程,还提供了视频教程,这一点对国内的开发人员来讲是非常友好的。


Iris


项目地址:github.com/kataras/iri…


Iris 框架在其官方网站上被描述为 Go 开发中最快的 Web 框架,并给出了多框架和多语言之间的性能对比。


如果你正在选择一款性能不错、轻量级且简单易上手的 Go 语言 Web 开发框架,Iris 是一个不错的选择。


Echo


项目地址:github.com/labstack/ec…


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 个项目,整体上来说,代码量不是很大,难度也适中。而且不同项目可以学习到不同的技术点,大家可以选择自己感兴趣的来尝试。


Go 练手项目.png


id-maker


项目地址:github.com/yongxinz/id…


Go 开发的一款分布式唯一 ID 生成系统。


代码量少,项目整体难度小,通过这个项目可以学习到 httpServer,gRPC 相关知识。


cache2go


项目地址:github.com/muesli/cach…


比较简单的一个缓存库,代码量很少,适合新手学习。通过这个项目可以学习到锁、goroutine 等知识。


rosedb


项目地址:github.com/flower-corp…


rosedb 是一个稳定、高性能、快速、内嵌的 k-v 存储引擎,支持多种数据结构,包含 String、List、Hash、Set、Sorted Set,接口名称风格和 Redis 类似。


项目使用纯 Golang 实现,Go 语言的绝大部分基础知识点都包含了,相信一定是学习和巩固 Golang 的很不错的项目。


除此之外,代码中还有一些数据结构的实现,所以同时也能学习一下数据结构的知识。


wechat-go


项目地址:github.com/songtianyi/…


这是微信 Web 版 API 的 Go 语言实现,模拟微信网页版的登录/联系人/消息收发等功能,可以完全接管微信收到的消息,并定制自己的发送内容。


我觉得这个项目还是挺有趣的,用来操作一下微信,能够体会到更多学习的乐趣。


gin-vue-admin


项目地址:github.com/flipped-aur…


gin-vue-admin 是一个使用 gin + vue 进行极速开发的全栈后台管理系统,后台使用 gin 框架,前端主要使用 vue。


项目的目录结构非常清晰,包名语义化,能够帮助你快速上手学习。


这个项目还使用到了一些流行的 Go 开源库及中间件,例如:


  • gin:最流行的 Go 语言 Web 框架
  • gorm:数据库操作中间件
  • zap:uber 开源的 Go 语言日志库
  • redis:k-v 缓存


除此之外,这个项目还有详细的中文文档,并且配套教学视频,值得学习。


实用工具


随着编辑器的逐渐强大,有一些小而美的网站的功能已经被编辑器取代了,但依旧不妨碍我喜欢它们,下面都推荐给大家。


Go 实用工具.png


JSON to Go struct


网站链接:mholt.github.io/json-to-go/


YAML to Go struct


网站链接:zhwt.github.io/yaml-to-go/


Table to Go struct


网站链接:github.com/gohouse/con…


使用方式分两种,分别是命令行调用和写 Go 代码。两种方式都不复杂,具体见这篇文章:推荐三个实用的 Go 开发工具


Rego


网站链接:regoio.herokuapp.com/


33473fff711245b8b8c0bcb7244a2cd7~tplv-k3u1fbpfcp-zoom-in-crop-mark 1304 0 0 0.png


Go 语言正则在线测试。


plantUML


网站链接:www.dumels.com/


dumels-2.png


这个网站可以分析一个 Go 项目,然后生成接口和结构体的 UML 图。有了这个图之后,基本上也就对项目整体关系有了一个基本概念,再读源码的话,相对来说会容易一些。

具体见这篇文章:读 Go 源码,可以试试这个工具


Playground


网站链接:go.dev/play/


c8bb09d0332d41fd8a18b28a892639ed~tplv-k3u1fbpfcp-zoom-in-crop-mark 1304 0 0 0.png


Go 语言代码在线运行。


技术社区


现在的话,技术社区可能看的人越来越少了,也不那么活跃。从我个人的经验来说,也是这样,有什么问题直接谷歌了,基本不会先到技术社区去查去问。


Go 技术社区.png


在这里推荐几个我觉得还不错的,闲暇时间可以逛逛看。



除此之外,还有两个网站很重要,就是 GitHub 和 stackoverflow。保守估计,这两个网站撑起了程序员一半的工资。


以上就是本文的全部内容,希望各位大佬学的开心。



相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
Cloud Native 中间件 Java
Go语言学习路线 - 8.高级篇:从五个问题来畅想Go工程师的未来发展
有人常说,编程语言对软件工程师来说并不重要,更重要的是软件工程思想、架构设计能力等更高层面的内容。 这个观点本身没有问题,但它更多的是针对有相当工作经验的程序员。对于绝大多数的人,编程语言依然是最重要、最核心的技能,也是通往更高层面的敲门砖。所以,精通一门编程语言,不仅仅要熟悉其语法与原理,更要了解其周边的生态,包括框架、开源库、中间件等,以及掌握它适用的业务场景。
163 0
|
前端开发 关系型数据库 Go
Go语言学习路线 - 5.基础篇:从一个web项目来谈Go语言的技能点
经过了 入门篇 的学习,大家已经初步了解Go语言的语法,也能写常见的代码了。接下来,我们就从一个Web项目入手,看看一些常见的技能与知识吧。 我们先简单地聊一下这个Web项目的背景:我们要做的是一个简单的web系统 ,有前端同学负责界面的开发,后端不会考虑高并发等复杂情况。
113 0
|
搜索推荐 Go
Go语言学习路线 - 4.入门篇:快速体系化地入门Go语言
如今互联网资料泛滥,入门编程语言的途径有很多种选择,但如果要我推荐,只有一个建议 - 研读一本该编程语言最优秀的基础书籍。 对于Go语言,我推荐 《Go程序设计语言》(The Go Programming Language),也被称为 Go语言圣经。
87 0
|
自然语言处理 前端开发 Java
Go语言学习路线 - 1.方向篇:明确Go语言的成长方向
目前,后端开发语言的就业方向主要分为两块:业务系统开发 与 基础平台开发 。Go语言自然也不会例外。
275 0
|
Go 知识图谱
GO学习路线及资源分享
GO学习路线及资源分享
|
运维 监控 安全
Go语言学习路线 - 7.进阶篇:一名软件工程师的价值沉淀
通过前面几讲的分享,相信大家已经能清楚地看到一名普通软件工程师的发展路线:不断学习技能,提高研发效能,实现业务功能。 如果我们尝试回头看,可能会对自己的定位存在疑问:这些日常CRUD的开发工作,很多不具备太高的技术难度,可以靠人力堆积来实现。那么,如何在研发团队里打造自己的技术壁垒、体现个人价值呢?
89 0
|
IDE 关系型数据库 MySQL
Go语言学习路线 - 6.提效篇:不懈地追求提升研发效率
在入门篇与基础篇之后,我选择做了这一讲提效篇。而在提效篇的推出之前,我也开启[Go语言技巧系列](https://junedayday.github.io/tags/Go-Tip/)的更新,着重分享一些具体的工程化实例,包括错误处理、Go Module等。
75 0
|
Cloud Native Go 开发工具
Go语言学习路线 - 3.准备篇:打造个人专属的学习环境
终身成长 一词已被广泛认可,意味着我们将比前人花费更多的时间在学习成长中,才能将个人的认知跟上社会的步伐。且不论是否应该放慢脚步,但我们大部分人不得不跟随社会的节奏,持续学习并提高自己。
94 0
|
Kubernetes Cloud Native Go
Go语言学习路线 - 2.方向篇:如何成为一名优秀的Go语言工程师
如何成为一名优秀的Go语言工程师,这是很多人都长期疑惑的问题。 我这边抛出自己的观点,希望能引起大家的思考: 掌握基础,熟悉生态,集百家长,深耕领域 接下来,我将围绕这四个词展开今天的分享。
111 0
|
运维 JavaScript Java
Go语言学习路线 - 0.总览
整个系列中,我会输出大量的主观观点,大家不一定能全盘接受,我也不希望大家全盘接受。我坚信,没有碰撞的技术观点无法引起大家的深度思考 ,犹如上课时老师对你进行单方面的内容输出;同时,主观观点会更具现实色彩与实践意义 ,我经历的公司和方向都很丰富,或多或少会和大家的实际工作产生共鸣。
44 0