我是一只可爱的土拨鼠,专注于分享 Go 职场、招聘和求职,解 Gopher 之忧!欢迎关注我。
欢迎大家加入Go招聘交流群,来这里找志同道合的小伙伴!跟土拨鼠们一起交流学习。
先上图
Go开发者路线图
Go Developer Roadmap
之前老有群友问谁有Go开发者学习路线图,今天恰巧总结了一下。首先介绍一下这个路线图[1]是在draw.io[2]网站上进行制作的,想法来源于 : ASP.NET Core Developer Roadmap[3],简体中文版翻译版Go开发者路线图[4] 由rainyan
翻译出品。
大概从三点罗列了一下需要学的知识点:必会、推荐学习、可选择了解。接下来我主要聊一下我觉得相对重要的一些模块并推荐一些资源和文章,欢迎指正。
Go基础
Go的基础学习,推荐的是golangbot[5]这个网站,包含了Go学习的系列教程[6]从HelloWorld到文件操作。个人感觉这个系列教程也挺不错的。同时我也想到了A Tour Of Go[7]和Go by Example[8]网站教程,上面很多example和讲解。golangbyexample[9]也被我发现了,基础教程的案例都比gobyexample和golangbot多一些,另外还配备了高级教程[10],主要包括了基础篇、进阶专题、设计模式和一些数据结构。也强烈推荐大家学习温习一波。
最后分享大家一个Go资源收集仓库Golang从入门到跑路【罗列各种Go资源】[11]
SQL基础
这里推荐学习的网站是w3schools[12],好久没上这个网站了居然变的这么lv,哈哈哈。sql的基础不说了,大家都是curd boy,
通用开发技能—开发原则
我看这里提到了一些开发中需要遵循的一些原则:SOLID、DRY、YANGNI、KISS。这里大概给大家逐一解释一下:
SOLID:
是下面五个面向对象编程中的设计原则的缩写。SOLID在Go中的运用dave[13]博客中也有讲解SOLID Go Design[14],简体中文由Haohao Tian[15]翻译,详细阅读见SOLID Go Design - Go语言面向对象设计[16]。
SRP(Single Responsibility Principle) 单一职责[17]
OCP(Open Closed Principle) 开闭原则[18]
LSP(Liskov Substitution Principle) 里氏替换[19]
ISO(Interface Segregation Principle) 接口隔离[20]
DIP(Dependency Inversion Principle) 依赖倒置/依赖反转[21]:
DRY:
Don’t Repeat Yourself
的意思——不要重复你自己。此原则是让我们在开发中把代码和逻辑划分为更小的可重用单元。重复性代码问题尤其是在多人维护的项目中也经常遇到,修改一处,其他逻辑部分也要修改极难维护。所以我们可以通过应用单一职责接口隔离等原则尽量拆分系统,模块,类,方法·。使其每一个部件都是职责明确的并且可重用的。
YAGNI:
You aren't gonna need it
的缩写,意思是指你不会需要它。主要思想是不要做过度设计,这是["极限编程"](https://en.wikipedia.org/wiki/Extreme_programming ""极限编程"")提倡的原则,指的是你自以为有用的功能,实际上都是用不到的。
KISS:
Keep It Simple, Stupid
的缩写——保持简单,愚蠢。KISS原则是保持代码可读性和可维护性的重要手段。
因为简单的代码更容易维护和理解。那什么是简单的代码呢?在我看来:每个方法只做一件事、处理很小的事情,行数最多控制在30行左右;变量、包名、方法的命名简单只戳其意;可扩展、易于修改重构。
小结
最后,我推荐一篇cheaterlin大佬写的万字详文阐释程序员修炼之道,万字详文告诉你如何做 Code Review这两篇文章,阅读量篇篇过万,主要讲述了如何去更好地写Go代码。
日志
日志的话目前为止据我了解很多Go厂中zap[22]还是用的最多的。推荐阅读
Go设计模式
Go设计模式推荐的是go-patterns[23],中文版的我这里推荐的是mohuishou大佬的golang design pattern go 设计模式笔记[24]的思维导图分享。
设计原则
设计模式
总结
文章偏向于资源分享,希望此篇短文分享能给大家带来一些收获,更多学习向导可参考Go开发者路线图。最后祝大家周末愉快。
参考资料
[1]
路线图: https://github.com/Alikhll/golang-developer-roadmap
[2]draw.io: https://draw.io
[3]ASP.NET Core Developer Roadmap: https://github.com/MoienTajik/AspNetCore-Developer-Roadmap
[4]Go开发者路线图: https://github.com/Alikhll/golang-developer-roadmap/blob/master/i18n/zh-CN/ReadMe-zh-CN.md
[5]golangbot: https://golangbot.com/
[6]Go学习的系列教程: https://golangbot.com/learn-golang-series/
[7]A Tour Of Go: https://tour.golang.org/
[8]Go by Example: https://gobyexample.com/
[9]golangbyexample: https://golangbyexample.com/
[10]高级教程: https://golangbyexample.com/golang-comprehensive-tutorial/
[11]Golang从入门到跑路【罗列各种Go资源】: https://github.com/jiujuan/go-collection
[12]w3schools: https://www.w3schools.com/sql/default.asp
[13]dave: https://dave.cheney.net/
[14]SOLID Go Design: https://dave.cheney.net/2016/08/20/solid-go-design
[15]Haohao Tian: https://github.com/llitfkitfk
[16]SOLID Go Design - Go语言面向对象设计: https://blog.gokit.info/post/go-solid-design/
[17]SRP(Single Responsibility Principle) 单一职责: https://zh.wikipedia.org/wiki/%E5%8D%95%E4%B8%80%E5%8A%9F%E8%83%BD%E5%8E%9F%E5%88%99
[18]OCP(Open Closed Principle) 开闭原则: https://zh.wikipedia.org/wiki/%E5%BC%80%E9%97%AD%E5%8E%9F%E5%88%99
[19]LSP(Liskov Substitution Principle) 里氏替换: https://zh.wikipedia.org/wiki/%E9%87%8C%E6%B0%8F%E6%9B%BF%E6%8D%A2%E5%8E%9F%E5%88%99
[20]ISO(Interface Segregation Principle) 接口隔离: https://zh.wikipedia.org/wiki/%E6%8E%A5%E5%8F%A3%E9%9A%94%E7%A6%BB%E5%8E%9F%E5%88%99
[21]DIP(Dependency Inversion Principle) 依赖倒置/依赖反转: https://zh.wikipedia.org/wiki/%E4%BE%9D%E8%B5%96%E5%8F%8D%E8%BD%AC%E5%8E%9F%E5%88%99
[22]zap: https://github.com/uber-go/zap
[23]go-patterns: http://tmrts.com/go-patterns/
[24]golang design pattern go 设计模式笔记: https://mp.weixin.qq.com/s/oTESBPt6mQjLGWc5g5iSQA##
欢迎关注Go招聘公众号,获取更多精彩内容。
后台资料分享
(后台回复以下数字获取对应资源)
100:Go简历模板 | 101:Go最全面试集锦 | 102:Go超级简历 | 103:Go安全指南 | 1024:LeetCode刷题指南 | 6379:redis集锦
往期精彩回顾
(点击关键词查看文章)
城市内推
北京 | 上海 | 深圳 | 杭州 | 广州 | 成都 | 西安 | 重庆 | 珠海 | 非996 | 外企.远程办公
大厂招聘
百度 | 阿里 | 腾讯 | 字节跳动 | 360 | 安全企业 | 京东 | 贝壳 | 滴滴 | 搜狗 | 新浪 | 探探 | 好未来 | 金山云 | 伴鱼 | 联通数科 | ApiSix | AiBee | 游戏公司 | 区块链 | 跨境电商 | 电商
资源分享
Go项目 | Go资源 | Rust项目 | Python项目 | 前端项目 |
面试专题
Golang专题