竹笋

首页 » 问答 » 问答 » PHP与GO的区别
TUhjnbcbe - 2023/9/7 22:19:00

解析型语言与编译型语言不管从性能上,还是从语法上有着较大的差异。

我刚开始从PHP过渡到GO时,无论从语法上还是编程思想上都感觉好别扭,PHP是面向对象的编程思想,而GO更像是面向包的设计思想,所以刚写GO时会经常以PHP编程思维去写代码逻辑,考虑继承考虑多态,其它的下次讲解,今天我举例了几项常见的PHP与GO语法上差异,有兴趣的朋友可以了解一下。

一、变量定义与赋值

这里可以明显突出脚本语言与编译语言的语法差异

PHP:弱类型变量,同一个变量可以随意赋值任何数据类型

GO:强类型变量,变量需预定义,不能随意赋值不同数据类型

二、函数定义与回传

Go多值回传比较方便,PHP单值回传某些情况还需判断元素isset($data[nickname])

PHP:函数只允许单个值回传

GO:函数可回传多个值,且传参与回参需定义数据类型

三、阵列(数组)

PHP对数组处理更方便更强大,GO定义多维数组需考虑类型,显得有点繁琐

PHP:定义一个数组变量,无需考虑元素类型任意的多层嵌入赋值

GO:需区分数组(定长)、切片、映射、接口

四、抛出异常机制

GO设计初衷就不建议用trycatch这种方式捕捉异常,在编译前就应该检查错误,很多人吐槽过这点。

PHP:try和catch可以友好的捕捉代码不规范的异常错误处理

GO:与其它语言不同,panic如果不用recover()会使整个主程序退出不可用

五、判断元素是否存在

PHP比较精简,内置函数判断,GO判断显得有点不太人性化

PHP:简单用in_array与isset即可

GO:切片类型必须用遍历判断,Map映射需回传值判断

六、继承

GO设计思想就不是面向对象的编程,所以没有太多继承与多态,编写思想上需要改变。

PHP:extends关键词继承父类的方法和属性

GO:struct结构体定义成员属性变量,从而实现继承

总结:语法上各有各的优势,下次从性能上给大家讲解一下区别。#编程#

1
查看完整版本: PHP与GO的区别