Golang学习路线

发布于 2021-11-04 13:39 ,所属分类:软件编程学习资料

最近由于时间原因,写新文章的时间估计不太够,所以我会把从前写过的一些文章翻出来修改修改重新发表。


原因有两个:

  • 主要原因:时间不太够。

  • 次要原因:想重温一些从前的思考,看看到目前为止是否有更深的思考。另外,以前写的一些东西没有进行分享,也想让大家看看从前的思考。


当然,我还是会努力写一些全新文章,特别是多写一些技术文章。今天重新发表的文章是《Golang学习路线》,首次发表参考:Golang学习路线。


以下是原文内容


由于项目原先使用Python开发,在QPS上遇到了瓶颈。从2016年开始,就开始使用Golang来重构项目。先后经历了两个项目,都是使用Golang进行开发。算下来,使用Golang进行项目开发已经将近3年,但是觉得自己对于Golang的理解以及思考还是欠缺很多。最近反思了自己的不足,决定系统性地学习下Golang,所以,整理了Golang的学习路径,以便日后参考。


入门基础

学习Golang,从入门语法开始,资料很多,包括官网以及一些大牛写的开源书籍:

  • Golang官网入门教程:https://tour.golang.org/welcome/1

  • Miek Gieben写的开源书籍Learning Go:https://miek.nl/go/,中文版由邢星翻译,托管在github上Learning Go中文版:https://github.com/mikespook/Learning-Go-zh-cn

  • Golang官方代码示例GoByExample:https://gobyexample.com/

  • astaxie写的 build web application with golang:https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/preface.md

  • Golang入门指南:https://learnku.com/docs/the-way-to-go


Golang标准库

掌握基本语法后,可以深入学习Golang的标准库,参考:

  • 官方标准库:https://golang.org/pkg/

  • 中文版的标准库:https://studygolang.com/static/pkgdoc/main.html

  • astaxie写的gopkg:https://github.com/astaxie/gopkg,主要是golang标准库的使用示例。

  • Golang语言标准库:https://books.studygolang.com/The-Golang-Standard-Library-by-Example/,也是Golang标准库的使用示例,可以和astaxie的开源项目互补着看。


Golang开源项目

对Golang有一定了解后,可以选择几个使用Golang开发的开源项目进行学习:

  • Kubernetes:https://github.com/kubernetes/kubernetes

  • Docker:https://github.com/moby/moby

  • etcd:https://github.com/etcd-io/etcd

  • Skynet:https://github.com/skynetservices/skynet-archive

  • beego web框架:https://github.com/astaxie/beego


Golang进阶学习

  • https://blog.golang.org/index,GoBlog上有不少Golang进阶知识,包括:slice实现原理、channel、并发编程、垃圾回收等。


Golang书籍推荐

  • 深入解析Go:https://tiancaiamao.gitbooks.io/go-internals/content/zh/index.html

  • astaxie写的build web application with golang:https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/preface.md

  • Golang入门指南:https://learnku.com/docs/the-way-to-go

  • Miek Gieben写的开源书籍Learning Go:https://miek.nl/go/,中文版由邢星翻译,托管在github上Learning Go中文版:https://github.com/mikespook/Learning-Go-zh-cn

  • 《Go并发编程实践》


Golang实战

学习一门语言最重要的还是用这门语言,在写代码过程中对于语言本身会有更加深入的了解。建议在学习Golang的同时最好以实际项目为基础,多写代码,在实际锻炼中进行成长。


以下是一些新思考

  • Go语言确实值得好好学。比较幸运的是在鹅厂依然用Go,而且领导也相信Go是一门优秀的语言。到目前为止,写Go已经5年多了。要说有什么深入见解,确实不多,只是坚信对于云原生来说,Go是不可缺少的。

  • Java过度强调“类”。现在更能体会当初章老师对比Java与Go的说法:Java实现一个简单的过程方法,都需要封装成一个类过度强调面向对象了其实,本科学Java的时候就烦的就是怎么去定义一个类,有时候就是一个过程处理而已

  • 用Go实现可读性更好。来鹅厂后,接手了一个用Java写的服务,然后用Go重构了。最大的体会是,代码可读性提升很大。在百度也做过重构,用Go重构了Python写的一个项目,性能提升很大,而且代码可读性也强了不少。Java的接口与注解,看代码的成本太高了,经常看着看着就不知道看到哪了。Python也有类似的问题,弱类型导致有时候要去猜这是个啥结构体。Go就没这种问题。


还没用Go的同学,建议了解学习下。Go写起来真的很爽。以上的一些学习内容,希望可以对要学习Go的同学有一定参考价值。一起加油吧,各位。



相关文章:Kubernetes 的学习路线

上一篇文章:打击只有副作用

相关资源