结合自己的经历谈谈怎么更好地学习Go语言
之所以会写这篇文章,是因为在自学Go
语言的过程,总会有些困惑和迷茫,总希望更好地学习下去,因此有了一些想法,在这里梳理一下,以便日后回过头来也可以看看此时此刻的想法。
关于基础
基础,除了学习Go
语言的基础外,也应该加强计算机基础的学习。
对于Go
语言的基础,很多从其他语言转过来的人,会觉得Go
的基础就是简单的语法知识,因此没有注重这块知识的学习,其实,我觉得对于Go
语言的基础除了基础语法
之外,还有Go语言的使用规范
、编程思维
、CSP模型
等,都需要深入学习和研究。
另外一个就是计算机基础,这方面的基础比较枯燥,包括数据结构
、算法
、计算机原理
、计算机操作系统
、计算机网络
等,我觉得计算机基础知识是一个程序员能走多远的关键因素,没有这些基础知识的加持,对于Go
语言的学习与使用,只会停留很基础的层面,无法入使用。
所以,基础很枯燥,但对于基础的学习,很有必要。
关于看书
很多关于Go
语言的书籍内容都是千篇一律的,大概是因为这些书籍只是简单地罗列出一些很基础的知识,其内容跟Go
语言的官方文档所列出的差不多,因此,如果是刚入门的新手想学Go
语言的基础,建议还是多看Go
语言的官方文档,特别建议看《Effective Go》,这里面有官方提供的Go语言最权威高效和的基础知识与使用方式。
当然也不是说所有的书籍都不值得看,像《Go程序设计语言》
和《Go语言实战》
这些经典的书籍,还是应该多看看。
除了官方文档与经典书籍,我觉得一些实战的书籍也不错,比如掘金小册《基于 Go 语言构建企业级的 RESTful API 服务》
,一般偏实战的书籍或课程,我们可以学习如何应用GO
语言开发程序,学习Go
语言最重要的一点就是使用Go
语言的思维开发应用程序,而不用其他编程语言的思维来写Go
程序。
另外一个要说的是,英语真的很重要,很多的技术官方文档都是用英文写的,所以需要一定的英语基础才阅读,很多人会说看翻译的中文文档不就行了,对于一些中文文档,一个是翻译得不全,一个是有时候也翻译得不准,还真不如直接看英文文档。
除了埋头苦学,还应该干什么?
阅读优秀开源项目代码
阅读别人优秀的项目源代码,是提升自己写代码能力的一个很好的方式,我们可以从那些优秀的开源项目中学到别人的代码组织方式,设计模式和代码分层,解决问题思路,优秀的算法和数据结构,甚至可以学习一些代码命名风格等。
尤其是从别的开发语言转到Go
语言的同学,更应该多阅读Go
语言的一些开源项目,因为Go
语言的很多设计和开发思想,跟其他编程语言真的很大的区别,所以,当我们转到Go
开发时,应该学习使用Go的思维去解决问题,而不是用其他编程语言的思维来使用Go
语言。
Go
语言的开源项目有很多,最有名的像大家都知道的Docker
和Kubernetes
,下面的网址,是别人维护的Go
语言优秀开源项目列表,建议大家收藏。
多动手,维护一个自己的开源项目
除了阅读别人优秀的项目源代码,其实,我们也可以维护一个自己的开源项目,这样的做好处是什么呢?
维护一个自己的项目,可以综合地运用自己所觉得的知识,看书看视频看文档去做代码练习,得到的只是一些简单的代码片段,不是一个综合性成果,真正体现自己学习所得的东西,应该是一个完整的项目。
加入技术社区
每一种编程语言或技术都属于自己的社区或圈子,Go
语言也一样有自己的社区,当然,那些英文的社区虽然有更丰富的资料和讯息,但我们可能由于自己的英文水平,而无法与外国的技术大牛沟通,那也没关系,Go语言也有一样非常优秀的中文社区,如Go语言中文网
。
除此之外,很多技术圈都会建很多的微信群或QQ群,我觉得加入一两个这样的群,跟群里的人讨论技术,遇到不懂的问题,也可以发问,如果自己懂的,也可以帮别人解决,让自己更加有学习的动力。
最好的学习方式:写作
为什么说写作是最好的学习方式呢?因为写作是一个教别人的过程,我们希望写的东西别人能看懂,这就会逼着我们主动去学习,而主动学习是最高效的学习方式。
这里有个概念,叫费曼技巧
,讲就是通过教授别人来达到主动学习的目的,而主动学习金字塔中学习效率最高的学习方式。
因此,在Go
语言的学习过程中,最好的学习方式还是在学习的过程,学会总结并记录所学的知识碰到的问题。
小结
对所学的知识进行简单的整理,或许这样有助于更加清晰地认识自己的学习,也能更好地调整学习方向与目标。
你的关注,是我写作路上最大的鼓励!
image