GO语言出道十多年,在国内似乎不温不火。但在近一两年内,Go语言社区变得越来越活跃,吸引了大量的编码爱好者。在Github和码云上,搜一下Go相关的Project,watch和star多数都在大几百到上千。网上搜下相关职位招聘,Go相关的职位要十几到二十页,薪资也还很诱人。而且能够看到很多大厂像跳动字节、拼多多、美团、京东等都在招聘Golang开发工程师,似乎一下子变得“香”了起来。
Go语言的由来
Go语言亦叫Golang语言,是由谷歌公司推出。主要开发者有:肯·汤姆逊(Ken Thompson)、罗布·派克(Rob Pike)和罗伯特·格里泽默(Robert Griesemer),三个都是大神。肯·汤姆逊(Ken Thompson):图灵奖得主,Uinx发明人,B语言作者(C语言前身),还做飞行员,后来被谷歌挖走。罗布·派克(Rob Pike):Unix团队和Plan 9操作系统计划的成员,与Ken老爷子共事多年,并共创出广泛使用的UTF-8 字元编码。罗伯特·格里泽默(Robert Griesemer):曾协助制作Java的HotSpot编译器,和Chrome浏览器的JavaScript引擎V8。三位大神同时坐镇Golong,同时还有很多大佬级的核心贡献者,可见非同一般。
三位老帅哥
至于为什么设计Go语言,用罗布·派克大神的话来说:“我们之所有开发GO,是因为过去10多年间的软件开发的难度令人沮丧。Go让我体验到了从未有过的开发效率。”看来Go语言最初设计是为了解决Google开发效率问题,让我们有了今天的Go语言。确实,在互联网世界,在开源世界,Google为我们贡献了太多。大厂出品,必属精品。
Go语言能做什么开发
Go语言是非常灵活的语言,是因为它的应用场景是目前互联网非常热门的几个领域,比如区块链开发、大型游戏服务端开发、分布式/云计算开发。像Google、阿里、京东等互联网公司都开始用Go语言开发自己的产品。
Go语言具有很强的表达能力,它简洁、清晰而高效。得益于其并发机制,用它编写的程序能够非常有效地利用多核与联网的计算机,其新颖的类型系统则使程序结构变得灵活而模块化。Go代码编译成机器码不仅非常迅速,还具有方便的垃圾收集机制和强大的运行时反射机制。它是一个快速的、静态类型的编译型语言,感觉却像动态类型的解释型语言。
学习Go语言的目的
首先要知道自己学习的目是什么?不管是编程爱好还是高薪跳槽,它决定你后续能不能一直坚持下去,这一点很重要。毕竟要慎始善终。
学习Go语言的方法
在这份入门指南中,在学习Go语言前需要制定一套学习方法,方法对了能提高学习效率,比盲目的追随热度重要。学习的方法有很多,看书、视频(网课)、社区、大神指路都可以。学习一门语言回归到最终的落地方法就是提高对语言的认知和写代码。方法多了也容易乱,所以需要我们从中甄选出高效的学习方法。高效的学习方法等于减少时间成本和认知成本。这里推荐的学习方法是:“师傅领进门,修行在个人”。
师傅领进门
“师傅”是对在某领域内能够快速帮助我们提高对事物的认知,只不过他们以不同的形式存在着的介质定义。可以是具体的牛人、朋友、一本书籍或者其他。另外,还需要能够触达到他们。如果你的身边存在这样的“师傅”,那就和他交个朋友吧。这里推选的1号师傅就是-韩顺平,韩老师,江湖人称:老韩。某著名培训结构的高级讲师,有十多年的授课经验,亦是清华高材生。玩转php、java、go、oracle、linux等,讲课有带入感。有他备课,不愁学不会。有了一定的语言基础,思维会变得有体系,再去看书就不会太吃力了。
第2号师傅是一本书,《学习Go语言》中文版。这本书的适合有一定编程语言基础读者,它会带着你由”简单-中等-困难”去探索Go编程。这边书很有趣,每一章都有一段有意思标语,读起来不会感觉乏味。比如:“Go是面向对象的语言吗?是也不是。”、“好的沟通就像是一杯刺激的浓咖啡,然后就难以入睡。”
第3号师傅也是一本书,《Go语言编程》-许式伟编著。选这本书目的是冲着许式伟来的,为什么这么说?因为当年许式伟创办七牛云,在面临技术选型的时候,很坚决的选择了Go语言。而在当时Go是一门十分小众的语言,选择Go无非会面临很多意想不到的困难。如果Go语言没有后续的发展,对一家云公司来说可能是灾难性的打击。但今天来看,他们选择Go是一个正确的选择。至于当初他们为什么有远见的选择Go语言,我们不得而知,或许书里能找到答案。
修行在个人
先通过“师傅”对Go语言有个整体框架的认识,认识Go语言的“知其然”。有了大体的认识之后,自己再去践行,不断的敲代码敲代码,来达到“知其所以然”。每敲一次代码,对Go语言的认知都会加深一次。敲代码也分三步走:第一步:基础练习代码,不可少。第二步:设计模式代码,设计模式是每个语言都必不可少的。第三步:项目实战。
资料汇总
Go语言核心编程课程
网盘链接: https://pan.baidu.com/s/1C7CXht8tInlS7gy2Ikxwcw 提取码: 7qdd ,内含(大量视频、源码、课件)
在线地址:https://www.bilibili.com/video/BV1pt41127FZ,方便在线观看,但没有源码和课件
《学习Go语言》中文版
网盘链接: https://pan.baidu.com/s/13jBhceFDIYR9cMpy1RZScQ 提取码: qwgm
《Go语言编程》许式伟,推荐购买书籍
链接: https://pan.baidu.com/s/1A93g6AsW_SAB29h3KoQvvg 提取码: 367n
《Go语言设计模式》
链接: https://pan.baidu.com/s/1ACZgFe3M42uKxfBzlrDk5w 提取码: 58z8
Go语言设计模式源码
https://gitee.com/git_sailor/golang-design-pattern
学了Go语言给我最大的感觉就是:如果乔峰乔帮主使用java语言打出降龙十八掌,那么人物入镜+背景音乐+预备招式一个都不能少。换成go语言,可能在人物刚入镜就已经打出来降龙十八掌,而且可以无限量随便打。
写在最后
生如逆旅单行道,哪有岁月可回头。无论Go还是Java都是一门实现目标的编程语言。学要学的开心,玩要玩的尽兴。既然选择了编程,便只顾风雨兼程。愿你的努力终有所得,加油💪。
关注公众号,一起协同进化