Go的學習 ========================== ###### tags: `Go` ![](https://i.imgur.com/wcqfpga.png) 1. Go by Example go by example 快速浏览一遍,如果遇到没写过的代码,手动操作一遍; 2. 选择一个Golang web 框架;比如:gin,熟悉其使用,将官方的例子都跑一遍: https://github.com/gin-gonic/examples, 然后再联系一个较复杂的demo项目,比如:eddycjy/go-gin-example 或者https://github.com/flipped-aurora/gin-vue-admin 这样之后,对这个web框架能上手开发了,如果有机会,可以向公司申请简单go api接口开发的任务,在工作中进行实践; 3. 了解grpc(grpc/grpc-go)的使用,grpc是go生态中热门的RPC框架。 将https://github.com/grpc/grpc-go/tree/master/examples 中的代码在本地练习; 4. 你是运维,应该有接触到运维脚本之类,无论是shell还是Python写的脚本,你可以将这些脚本用Golang重新实现一遍,Golang写脚本也是相当方便的; 5. 书籍方面: 《Go语言圣经》(可以快速浏览)、《Go并发编程实战》(值得认真阅读) 6. 提升代码质量: https://golang.org/doc/effective_go.html https://github.com/uber-go/guide/blob/master/style.mdhttps://github.com/uber-go/guide/blob/master/style.md 7. 如果你的计算机基础还行,可以像其他回答里说的,完成mit 6.824的大作业。 8. 想要更加精进,不能避免的就是阅读源码了。可以从Golang自身的源码开始,例如: net、os、file、sync等包,数据结构:slice、map、channel、goroutine。@皮拉图斯的分类图很赞很全啦!请参考之。 9. 阅读优秀的Golang开源项目源码。Golang优秀的开源项目的源码很多,特别是云原生领域的。如果你真的不知道选择看哪个源码,你可以从你所知的领域,或者你有在使用的一些优秀的工具等,但不是Golang写的,可能是Python写的,往往也很有可能也有Golang的实现,你可以选择它们进行阅读。Golang也有很多在运维监控方面优秀的开源项目,像Prometheus,influxdb等等。阅读源码,要么是目的明确,要么是兴趣,要不然可能会觉得枯燥无味,或者因为代码量太大而中途放弃。这是本人学习Golang不同开源项目进行练习的代码: pathbox/learning-go (仅供参考) 10. 最后,Just do it。Don't stop learning Golang 11. 完成mit 6.824的大作业,写一个基于raft的分布式kv系统,课程语言用的是Go,知乎上搜一下mit 6.824会找到很多,我做了一半了,很有挑战。(做完这个一定看一下pingcap的talent plan https://university.pingcap.com/talent-plan/ 参与开源的理想路径) 12. 用Go写了个网站,我的场景是知识付费,学会了Go Web开发的方方面面。 13. Golang代码可读性很强,标准库源码就是一个例子。很多项目其实代码量非常少,这点让我很惊讶。分享几个我在读的,比较适合学习的小项目。 - https://github.com/davecheney/httpstat 类似curl,很简单 - https://github.com/golang/groupcache 类似memcached,代码也不多 - https://github.com/go-chi/chi 非常符合Go风格的 router - https://github.com/netlify/gocommerce 电商,比较接近真实web场景,可以学到很多 14. go pprof 性能分析 https://juejin.im/entry/5ac9cf3a518825556534c76e 15. Golang 的引用类型底层实现 https://zhuanlan.zhihu.com/p/111796041 16. go runtime 简析 https://zhuanlan.zhihu.com/p/111370792 17. go學習筆記 https://github.com/lufeewu/note/blob/master/golang.md