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 的学习路线
上一篇文章:打击只有副作用
相关资源