一个 PHP 程序猿学习 Go 的体悟
正文开头先来一口鸡汤
没有什么事情是一蹴而就的,要想取得成绩,那就努力吧。
- 敬“明天”
为什么想学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
<?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 协议》,转载必须注明作者和本文链接
推荐文章: