正文开头先来一口鸡汤
没有什么事情是一蹴而就的,要想取得成绩,那就努力吧。
- 敬“明天”
为什么想学Go
要谈论学习心得,首先就得谈谈我为什么要来学习Go语言了。
首先我总结了几点原因:
PHP并发支持不好,就算是有了swoole、workerman等扩展,依旧杯水车薪
PHP对微服务的支持不行
PHP在大型企业不能满足使用需要
Go语言最近几年火变国内外
Go原生并发支持
Go入门使用简单
Go第三方扩展丰富
好吧,看到这里的朋友,肯定会说我又在水文了,或者说我在挖PHP的坑。
首先声明,我没有说PHP不好,可能是我太菜,知识面太浅薄,勿怪。
Go作为一门新兴语言中的佼佼者,而作为一门新兴语言能在国内快速崛起和形成趋势,必然有它可取之处,作为新时代的程序猿,咱们不应该存有语言偏见,有好的咱需要了解和学习。
也是抱着这样的态度,我开始了Go语言的了解和学习历程。
首先讲讲不一样的地方
PHP和Go其实都算是或多或少的使用和保留了一部分的C语言痕迹,当然在其中,Go语言看起来更为明显,毕竟Go是一门强编译性语言,定义变量或者方法体时,需要严格的声明其类型,程序完成需要运行时,需要先进行代码编译,生成可执行的文件,然后再运行可执行文件,方可以查看程序运行结果。
然后我也总结了一下不一样的地方,如下:
(如有缺少,请大家补充说明)
文件后缀名不同
代码命名空间声明不同
引入第三方扩展不同
声明变量格式不同
变量类型也有不同
方法定义不同(请注意:Go中私有、公开、受保护定义方式)
流程控制和循环控制语句使用上也有些许不同
执行方式不同(上文说了,PHP是解释性弱语言,Go是强编译性语言)
好了,整了这么一大堆,我想大家看了也有点懵比和反诬,再想到底这门语言好学吗,或者说是PHP好不好转Go语言。
我想这个问题,我不需要回答,因为Go语言的现有程序猿里,可能有百分之40%是从PHP过渡的。
所以我想不需要解释说明什么了。
聊一聊OOP吧
本小节更新于:2020-4-11
phper们都知道,现如今PHP编程的核心思想就是面向对象(OOP),因为面向对象的思维和概念,给予了人们很多新鲜的思维和想法,可以把很多事物的共同体抽象出来,形成一种事物模型,在通过模型的封装、继承、多态来实现具体的实物模型功效,毫无疑问这是一件非常好切重要的概念或者编程思维。
但事实上,上帝给你打开一扇窗的时候,往往会在墙角挖上一个深坑,你要是不能好好地去思考与观察,就会毫无疑问的跳进坑里,以至于无法自拔,更无法怪及他人。
面向对象(OOP)在编程高手眼里是一个魔术师,可以化腐朽为神奇;但是在小白眼里这个只起到简单的聚合作用,甚至于在学习与观察时,因为初入时间较短,看不清形势,导致直接挖坑把自己埋了。
所以再好的东西,都是一把双刃剑,请注意你使用的方式,不要把自己放到深渊之内。
但请你也不要害怕犯错,要勇敢尝试新事物,不过这一切的前提是,你要分得清重要性。
go编程设计时,其实就充分思考过这个问题,因为上天虽然是独爱某些天资聪慧的人们,但也不会让没有天赋的人,毫无入门之路一说,所以go语言在设计时,就只保留了最简洁的类的概念,去掉繁琐OOP思想,只是为了让语言更简洁、更方便学习和阅读以及工作交流。
举个例子:
定义一个用户类,具有电话属性,以及一个打电话的功能,分别用PHP和GO实现。
PHP
class User{
public $phone;
public function calling(){
echo "我可以拨打电话";
}
}
GO
package main
type User struct {
phone string
}
func (U *User) calling(){
print("我可以拨打电话");
}
注解
划重点: Go 没有类似于 PHP 中的 Reflection相关的构思与实现。
虽然 GO 本身是没有做这方面的构思与实现,但是有很多扩展和第三方包通过反解析Go doc 来完成了此项功能。
以下举例:
这里只是说明以下内容实现了注解解析的内容。
Beego
Iris
swag
其实,在这一个点上,个人比较倾向于PHP哈,虽然没有JAVA的注解来的标准化,但是对于平民玩家更容易理解与构思哈,至少可以通过函数与类的实例,调取并解析注解的内容,而Go注解相关的解析成本就高的多了。
最后嘟囔一句:以上均为个人看法和理解,如有不同意见,请在评论区留下你的建议和指教。
待续
本文未完待续,因为旧梦也需要不断地学习,才能更好的更新….
后记
最后说一句:
有人的地方,就有江湖。有需求支配,才能迅速学习。
盼共勉,祝君荣登极道。
本作品采用《CC 协议》,转载必须注明作者和本文链接