如果你是因为做PHP只是接触了CURD,普普通通的业务逻辑才想转的Go,那么还是踏踏实实的继续深入了解、学习PHP吧。

为什么这么说呢?

学习新的编程语言主要是为了解决现在的语言满足不了业务了,但是其实PHP也好,Go语言也好,到后面都需要会设计合理的数据结构,设计合理的数据层优化纵分横分索引分哈希分,各种缓存redis,memc等,设计各种ngixn的承载的分发,读写优化,微服务架构,各种主从,哨兵机制,各种消息队列,搜索引擎,链路监控,灰度发布,你还得懂单元,冒烟,黑白等等各种测试机制,还有常用的单例,工厂等设计模式了。

你看,这里面有几个是PHP本身的呢?所以,无论是PHP还Go语言,底层的能力都是通用的。

Go语言是一门全新的静态类型开发语言,具有自动垃圾回收、丰富的内置类型、函数多返回值、错误处理、匿名函数、并发编程、反射、defer等关键特征。从语言层面来说天然支持并发,可以充分利用CPU多核,并且非常适合用来进行服务器编程、网络编程和分布式编程等。

在云计算领域,用Go语言编写的云基础项目如Docker、Kubernetes都取得了巨大的成功,别外还有知名的项目如Etcd、consul、flannel等,也都是使用Go语言实现的。

为此我还专门整理了关于如何学习Go语言的资料,从基础到进阶、Web编程、微服务的学习,你可以参考一下。

基础学习

书籍推荐

《Head First Go语言程序设计》、《Go语言学习笔记》、《Go语言趣学指南》、《Go语言编程》

当然,不必所有的书都读,找其中一本学习即可。

在线学习Go语言资料

初级练手项目

Go语言进阶

书籍推荐

《Go程序设计语言》、《Go专家编程》、《Go语言高级编程》、《Go并发编程》

在线学习Go语言资料

1.《Go 语言设计与实现》: https://draveness.me/golang。

进阶练手项目

Go Web编程

书籍推荐

在线学习资料

可以学习下 web 框架 Gin、beego:两个框架都比较的流行,选择其中一个其实就可以了,推荐 Gin。官方文档都有中文,照着 demo 敲一下,了解下怎么处理 HTTP 请求的。

其次还需要掌握一下比较流行的 ORM 框架 Gorm,有官方中文文档,照着 demo 敲一下基本上两天就能掌握了,后面遇到不会的再来查。

Web框架相关的,基本上看官方文档就可以了,就不用再去找专门介绍的书籍,没有比官方文章更正宗的资料了。

除框架之外,你还需要学会的是包括但不限于:

  • web的逻辑,Http协议,grpc,session,cookie等这些web的基础知识
  • 数据库方面MySQL、Redis、MongoDB等
  • 中间件Kafka、Etcd等
  • 文件文件处理,XML、JSON、正则等
  • 安全与加密,预防CSRF攻击、XSS攻击、SQL注入等,加密解密等

Go Web项目推荐

Go 微服务

目前 Go 在微服务中的应用也比较广泛,但说实话,微服务是一个太庞大的话题,你不可能把每一个核心的问题都能够搞清楚,而且也没条件,或许只能在公司的具体的微服务生产环境中,才能够对相关的概念有更加深刻的体会。

推荐一本微服务概述的基础书籍《微服务设计》、《微服务架构设计模式》,可以帮助你理解微服务的建模、集成、测试、部署和监控的一些基础知识。

其次,你可以看一下《Go微服务实战》这本书,看后半部分即可,里面其实介绍的还是关于微服务方面的知识。

推荐 Go 语言的微服务框架 GoKit、GoMicro、go-zero、kratos,可以随便选择一个,理解其基本的用法、设计等等。其中 go-zero 和 kratos 是国内开源的,因此都有比较详细的中文文档。

在线学习的资料:

手把手实现一个简单的 Go 微服务项目,你可以通过这个项目来学习微服务的相关知识,并且有中文版。

Go语言原理研究

如果你对Go语言底层原理感兴趣的话,可以看下这本书《Go语言底层原理剖析》。

开源项目学习

在项目开发过程中,也会用到各种开源项目。一开始没必要直接钻研源码,先要学习开源项目背景,能解决什么问题,开源作者的项目理念,使用了哪些技术等等。

这些清楚以后,可以找自己感兴趣的技术点或者模块去针对性的学习,千万不要想着一开始就想一网打尽式的学习,没有针对性意味着没有重点,没有重点很大概率就会白学或者学到的就会很少。

先推荐几个经典的开源项目供你参考:

如果你有自己比较看好的开源项目会更好,兴趣永远是前进的第一步。

相对前几年,Go语言的书籍、教程,各种文章都如雨后春笋一般越来越多,学习起来也更加方便,但是同时也要注意不要过度陷入知识碎片而无法自拔,最重要的还是要去系统去学习一下,针对性的练习、实践和应用。

我整理了一些Go语言的视频和电子书资料,如果你感兴趣的话,可以自己下载:

也可以关注我的知乎,一个爱分享的程序员,如果对你有用,来个赞吧!