最近在学习 golang ,先看了一些理论的东西,比如变量定义、接口实现等一些基本概念,我白天写 Java,所以大部分会和 Java 比较学习,比如Go的接口实现类不用指明实现的接口,只要 struct 定义了对应的方法就算实现了其接口,没有显式的 implement 关键字。

看了一些理论的东西后,动手实践写代码,培养熟悉感很重要,我选择的是 learngobyexample https://gobyexample.com ,(来自 PingCAP 的 hacker @zhexuany 推荐的)几乎每天一两个小栗子,每个小栗子都会接触到新的知识点并且实践它,然后代码放在 github 上做管理,用 checklist 来标记进度。


写了一些struct、channel 、make 、slice、goroutine等相关的具体的代码的时候,开始找一些工程实践的机会。比如,去看看现在比较火的 Go 的明星项目,我选的是 TiDB ,然后提了一个兼容 MySQL 的 Pull Request 看下这个微小的PR。嗯,我觉得学以致用很重要。




在提交 PR 的过程中,也学习到很多东西,看右边好多 hacker ( @申砾 @姚维 @cholerae @tiancaiamao是这个 @天才)来 Review 我的代码,深感荣幸。 PingCAP 的大神都很 nice ^_^


现在 learn go by example 的整个项目还在进行中,答主还在学习 Go 中,每次学习一点点,控制项目进度,把敏捷项目管理的思想用在自己学习一门新知识的实践中;防止自己因为太懒废弃了,也防止因为太难放弃了。


所以,总结下来,我学习的心得就是先了解基本概念和理论,然后最重要的是深入细节,细节可以培养熟悉感(好像很有道理 哈哈 ),还有就是意识到学习一门新语言是个系统工程,不能一蹴而就,这个时候要学会使用一些项目管理技巧来进行自我管理。(如果自己水平越高,管理成本会越低,笔者平时在写Java,业务代码写得多,系统编程接触的比较少,水平一般般,所以要多付出点自我管理成本哈)。个人经验,希望可以有所帮助。


以上。