Go语言和PHP简单对比
PHP vs Go:基础语法对照表
| 功能/概念 | PHP示例 | Go示例 | 差异说明 |
| 文件头 | <?php | package main | Go必须用package定义报名,主程序必须是main |
| 入口函数 | 自动从上到下执行 | func main(){} | Go的主函数必须是main() |
| 输出 | echo "hello"; | fmt.Println("hello") | Go需导入fmt包,函数名区分大小写 |
| 语句结束符 | 必须写; | 自动添加,不需要写;(一行多个语句时需要) | Go编译器自动补全 |
| 导入库 | use Some\Lib;或自动加载 | import "fmt" | Go必须眼红双引号,不能单引号 |
| 函数定义 | function add($a,$b){ return $a+ $b;} | func add (a int,b int){ return a + b} | Go必须定义参数类型和返回类型 |
| 变量声明 | $a=10; | a:=10或 var a int = 10 | Go是强类型语言,必须类型推断 |
| 字符串连接 | $a . "text" | $a + "text" | Go使用+连接字符串 |
| 数组 | $arr =[1,2,3] | arr :=[]int{1,2,3} | Go数组固定大小;切片更常用 |
| 条件语句 | if($a >0) {} | if a >0 {} | Go没有()包裹条件 |
| 循环语句 | foreach($arr as $v){} | for_, v:= range arr{} | Go使用range遍历切片/数组/map |
| 类和方法 | class User { function login() {}} | type User struct { } func (u User) login() {} | Go没有class ,使用struct + 方法 |
| Web服务 | Ngin+PHP-FPM调用PHP文件 | 使用net/http启动服务 ListenAndServe | Go是自己实现Web服务,无需Nginx |
| 并发处理 | 多线程/异步需扩展支持 如swoole | 使用go func()启动协程,内置支持 | Go并发是语言级特性 |
| 错误处理 | try{}catch(Exception $e){} | if err != nil {return err} | Go没有异常机制,使用多返回值处理错误 |
| 部署方式 | 解释运行PHP-FPM | 编译为二进制文件,直接运行 | Go是编译型语言,部署更轻量 |
| 依赖管理 | composer composer.json | Go Modules go.mod | 类似作用,不同工具 |

浙公网安备 33010602011771号