有经验的程序员的话,建议快速把语法过一遍,基础的资料可以看官方的 go tour 或者 go by example。接着,就可以开始实战项目了,真正的使用还是要经过项目锻炼。
既然你是 PHP 程序员,那你肯定是 web 开发的多,对各种 web 框架肯定很熟,orm 的使用肯定很溜,MVC 那套熟悉的很。
那就从直接练起来吧。通过做项目,你才可能发现还有很多内容不懂,然后,再一点点总结。或许,这时候将会发现自己需要详细了解下标准库的知识,否则代码会写的很累。
Go 的 web 框架,beego、gin、iris 等,orm 有 gorm、xorm 等等。如果,不想用框架还有 net/http 标准库直接用,或者 fasthttp 高性能的 http 库。如果想找一些 go 的第三库的话,不知道如何下手,可以先去 awesome-go.org 看看。
再往下谈,还有云、微服务相关的一些话题,也有不少框架。
这个思路是基于想快速进入项目实战。
如果是闲的蛋疼,并且自己的开发经验还算比较丰富。可以尝试把 Go 系统学学,可以通过不断读读文章、不断总结,写写文章教程进行练习。比如,这就是现在的我。初期,高大尚的内容不太适合 Go 学习,到一定程度,可以考虑读读一些流行项目的源码,比如 k8s、etcd、nsq 等,说实话,我还没读过,但毫无疑问,源码是一剂良药。现在,我平时也就看一些组件第三库的源码,相对比较简单。
先从基础谈起,肯定是语法层面。
Go 的语法比较简单,相对其他高级语言就是多了个指针,如果你用过 C/C++ 的经验,Go 的指针就是小儿科,非常 easy 的。
要说新的东西的话。
首先,Go 中的一些设计理念上有其他语言有不小差异,需要适应。没有 OOP,强调组合,和 PHP 相比的话,Go 是强类型,静态语言,可能初期写起来会比较烦,当然,这种感觉其实是被动态语言惯得。如果,你是用 C++、Java,就会感受到 Go 的简洁。
还有,Go 的并发编程虽说是语言原生支持的,但要用好,还是要花点功夫,有些 Go 新人都会犯常见错误。各种常用的并发写法要熟悉。当然,如果只是增删改查的话,用到并发的机会不多。
总之一点,得看你 Go 学的多深,一时也说不完,比如 Go 的包管理和错误处理可能也有会让你感觉别扭,要理顺自己,还得知道作者为什么这么设计。
Go 格言可以了解一下,理解作者设计思路有助于帮助自己的舒畅的写代码,查看地址。下面是截图。
如果想找一些资料的话,书、视频、社区、文章等。我之前的回答提到过一些,可以翻翻。
我也是今年刚学的 Go,到现在刚过半年。有兴趣的话,关注下我的 Golang之旅,我一直在坚持输出总结,这样学起来会比较快。