我的 Gopher 成长之路
很早就开始准备这篇文章了,但总是想了又想不知怎样才能更好的写下自己最真实的想法,后来在经过了好几个晚上睡前的思考后才得以完成。
首先,写这篇文章的目的并不是为了吹嘘 Go 语言有多厉害,也不是鼓励大家都来学习 Go 语言,仅是为了记录和分享。当然如果是兴趣使然,那么欢迎你继续阅读下去,或许我们都有过相同的想法和感受,或许我们可以成为朋友,或许我们都能在 Go 语言中找到快乐。
解释一下什么是 Gopher。
如果你直接拿有道词典或者百度来翻译 Gopher 这个单词的话,那么不出意外大概率会得到囊地鼠或地鼠等一些直译的结果,其实不然,如果有了解 Go 语言的朋友应该会知道,Go 语言官方的 Logo 和吉祥物都是一只蓝色的小囊地鼠,而这个小动物的英文名称就是 Gopher,简单来讲,Gopher 同时也指的是将 Go 语言作为主力编程语言的程序员或 Go 语言的忠实爱好者都可以称之为 Gopher。
了解 Go 语言
![](https://static001.geekbang.org/infoq/d8/d82ffecb0fd833d8d18fa87cc66df78e.png)
首先对 Go 语言再做一下简单的介绍,Go 语言是由 Google 公司开发,于 2009 年正式发布的开源编程语言,具有高效、简洁、安全、支持自动垃圾回收等特点,被广泛应用于云计算、网络编程、分布式系统等领域。
与此同时,社区中常见的一些开源项目如 Docker、Kubernetes、etcd 等都是由 Go 语言编写,并且 Dubbo、gRPC 等 RPC 框架的 Go 语言版本也都在企业项目中非常的常见,在 Web 领域中,Gin、Echo、Beego 等 Web 框架也都正在被广泛的应用。
在实际的学习和使用中,Go 语言给我最大的感受就是简单、高效,一谈到 Go 语言,我就会想起那句脱出而出的话,"less is more",少即是多,我想大多数 Go 语言的爱好者也都会有相同的感受。
此外,在 2023 年的 3 月份,TIOBE 编程语言排行榜中,Go 语言已经跻身前十名。
与 Go 语言的初相识
其次再回忆下与 Go 语言的初相识,说到第一次了解 Go 语言,还是在大三的一个寒假,当时正在准备一个将要参加比赛的软件作品,短时间内编写了大量的 Java 代码,当时可以说对 Java 比较擅长,自认为在这门编程语言方面的能力已经达到“出神入化”的地步(当然事实可能并非如此),所以想要再寻找一个新的编程语言和技术栈来拓宽自己的视野和能力,在寻找的同时,经常看到社区中出现这样的新闻:xx 大型互联网公司正在用 Go 语言重构系统、Go 语言是 21 世纪的 C 语言等等,于是就对 Go 语言有了一些好奇,马上到 Go 语言的官网下载了当时最新版本(1.16)的 Go 语言安装包,同时安装了 GoLand 作为 IDE,按照 GitHub 上的一个教程,打印出了如下的 Hello World 程序:
记得在运行第一个 Go 语言的 Hello World 程序的时候,自己有这样几个想法:
用 func 作为函数的声明,用 fmt 作为包名的方式很奇特,因为都是简称
每一行的末尾竟然不用分号
确实有点像 C 语言
在后续了解 Go 语言的过程中,也有过很多各种各样的想法和问题,但是我一直都没有放弃,渐渐的就成为了我真正的爱好。
Gopher 的成长之路
不知道从什么时候开始,我也喜欢自称为 Gopher,或许是在 Go 语言中找到了真正的兴趣,而成为 Gopher 之前的一些经历也都颇有些偶然。
当时是在大四的上学期,规划外出到公司实习,于是就开始投简历,投出很多份之后收到了一份来自一个比较知名公司的职位面试邀请,了解一下之后才知道是 Go 语言相关的实习岗位,虽然当时对 Go 语言有一些了解,但是要真正参加工作的话还是更青睐于 Java,其实抛开编程语言不讲,这个职位对自己还是有些吸引力的,在学校里的室友商量了一下后决定选择尝试,后来通过几轮面试后成功拿到了 Offer。
可以说正是因为这次偶然的尝试成为了我变化的一个开端,自此从语言特性到设计思想,从框架再到开源项目的源码,直到现在,Go 语言已经替换 Java 成为我最喜欢和最拿手的一门编程语言,自己也成为了一名真正的 Gopher,对 Go 语言一直保持这学习和热爱,同时憧憬着 Go 语言的未来。
如何学习 Go 语言
下面就来分享一下我的 Go 语言学习方法和过程:
在学习 Go 语言的初期,我采用的是看 GitHub 上的教程的方式来进行学习,当然中间还看了菜鸟教程这个学习网站,将教程中的每一段代码都在 IDE 上运行一遍,在学校的图书馆里还找到过一本 Go 语言的相关书籍,叫《Go 语言学习笔记》,以此来了解 Go 语言的基础语法和特性。
后续的学习过程中主要是以实践为主,着手学习 Go 语言与 MySQL、Redis 等相关中间件的配合使用,了解一个比较热门的框架来开发一个自己的作品,在开发的过程中边踩坑边学习,记得我当时就使用 Go 语言的 Beego 框架和 MySQL 开发了一个自己的博客系统。
当我们能够使用 Go 语言做出自己的作品的时候,就可以算得上过了小试牛刀这一关了,其实 Go 语言最应该掌握的是它优秀的编程思想,诸如“不要使用共享内存的方式来通信,而是使用通信的方式来共享内存”等,还有就是 Go 语言 slice、map 等数据结构,channel 的特性以及 goruntine+channel 并发利器的组合使用等,要进行逐个击破。在此过程中可以不断的形成一些小案例,或者是总结一篇自己的博客,比如我在 CSDN《布道 Go 语言》专栏的(https://blog.csdn.net/mr_yanmingxin/category_11745215.htm)50 多篇文章以及《玩转 gRPC 框架》(https://blog.csdn.net/mr_yanmingxin/category_12172887.html)专栏都是我在学习 Go 语言的过程中不断总结出来的。
再往后,就要尽量的将自己的知识形成体系,找出不足,了解一些常见的设计模式,尝试着阅读一些 Go 语言的框架源码,比如 gRPC、etcd、Docker 等等,体会那些编程牛人的设计思想。
以上这些就是我学习 Go 语言的过程,当然这个过程仍在继续着,如果大家有更好的学习方法,也欢迎留言分享。
期待 Go 语言的未来
最后,我们再一起展望一下 Go 语言的未来。Go 语言在近年来逐渐成为互联网领域的主流编程语言之一,或许它也有令人不解的诟病,但是又有哪一门编程语言可以称得上是完美呢,在 Go 语言版本的不断更新中,到目前最新的版本(1.20),已经支持了泛型等新特性和内存模型、垃圾回收机制的优化,同时,Go 语言社区也在不断发展,吸引越来越多的开发者加入其中,推动 Go 语言的进步和完善。我相信在未来,Go 语言一定会在简单、高效的原则上支持更多的功能特性,成为后端领域中不可或缺的一门主力编程语言,也会有更多 Go 语言开发的优秀项目和产品不断展现。
版权声明: 本文为 InfoQ 作者【海风极客】的原创文章。
原文链接:【http://xie.infoq.cn/article/c9629a57f6acfaa934ac34426】。文章转载请联系作者。
评论 (1 条评论)