我正在参与掘金创作者训练营第5期, 点击了解活动详情
如今微服务和云原生已经成为一种趋势。在火热的云原生领域,K8S和Docker以及许多的云原生组件,都是 Go 开发的。作为应用的基础,代码也是开源的,Go也就得到了许许多多人的关注。 所以现在越来越多的人转go语言。
我就是从PHP转到go上的。在两年前看到身边有小伙伴从php转到go开发后,就有转go的想法,只不过是当时没有太多的精力去专心学习,学完之后没有实践的机会,时间长了也就慢慢忘了,所以最后也就不了了之了。最近公司项目在做重构,然后老大就过来问我,有没有意向搞Go,我的回答是求之不得!转go开发陆陆续续也有一年多时间了吧,下面我来稍微总结下转go的一些体验吧。
PHP与GO的区别
1、Go是编译型语言,PHP是一种解释型语言。
2、Go是一种静态类型语言。PHP是一种动态类型语言。
3、PHP是面向对象的编程思想,而GO更像是面向包的设计思想。
4、其次就是一些语法层面上的区别:
a、go程序不用在每行的后面加分号;
b、go程序的函数括号: { 不能单独在一行,不然会报错
c、go程序的派生类型比较多,且对于数据类型的定位更为精准。比如int和uint,int8等,比起php只有一个int类型,go要严谨的多
d、go每增加一个新变量都是要显式声明的,比如 var a int = 50; 也可以用 a :=50;来声明。php使用变量是不用声明的。
e、go声明变量之后,不指明变量类型的话,则会自己推断所属类型。如果给出类型,例如 var x,y int 此处没有给出x,y指定的值,则默认为0。bool类型的默认值为:false
f、在go中,全局变量声明之后,可以不被使用。如果是方法体中的局部变量,声明之后必须要在下面使用,不然会编译错误
GO语言关键特性
GO语言之所以厉害,是因为它在服务端的开发中,总能抓住程序员的痛点,以最直接、简单、高效、稳定的方式来解决问题。这里我们并不会深入讨论GO语言的具体语法,只会将语言中关键的、对简化编程具有重要意义的方面介绍给大家,跟随大师们的脚步,体验GO的设计哲学。
GO语言的关键特性主要包括以下几方面:
- 并发与协程
- 基于消息传递的通信方式
- 丰富实用的内置数据类型
- 函数多返回值
- defer机制
- 反射(reflect)
- 高性能HTTP Server
- 工程管理
- 编程规范
相关书籍资料推荐
(1)语言基础
《Go编程基础》github.com/Unknwon/go-…
《go入门指南》github.com/Unknwon/the…
《GoWeb基础》github.com/Unknwon/go-…
《go库讲解》github.com/Unknwon/go-…
(2)进阶相关
书籍《go语言高级编程》 pan.baidu.com/s/1pi_TvlbY… 提取码:3ub3
书籍《go语言实战》 pan.baidu.com/s/1q2whQFye… 提取码: bp73
《go语言圣经》中文版github.com/golang-chin…
《Golang中国》golangtc.com
《Go语言中文网 》 studygolang.com
(3)我的专栏
go学习笔记:juejin.cn/column/7089…
相信 Go 在国内会越走越好!