第一天:从PHP到Golang,零基础入门的环境搭建与第一个程序

yvsm5个月前Go语言5410

作为一名PHP开发者,当你决定接触Golang(简称Go)时,首先会好奇它和熟悉的PHP有哪些差异,以及如何快速迈出第一步。今天我们就从环境搭建第一个Go程序入手,用PHP开发者熟悉的思维来解锁Go语言的入门姿势。

一、为什么PHP开发者要学Go?

在开始之前,先明确Go的核心优势,这能帮你理解它和PHP的定位区别:

  1. 性能差异:PHP是解释型脚本语言,运行依赖Zend引擎,在高并发场景下性能瓶颈明显;Go是编译型语言,直接编译为机器码,执行效率接近C/C++,且天生支持高并发。

  2. 并发模型:PHP通常依赖FPM进程模型实现并发,资源占用高;Go的Goroutine(协程)轻量且高效,几万甚至几十万协程也能轻松承载。

  3. 部署方式:PHP项目部署需要搭配Web服务器(Nginx/Apache)和PHP-FPM;Go项目编译后是单一可执行文件,无需依赖运行环境,部署极其便捷。

  4. 工程化能力:Go内置完善的标准库和包管理工具,代码规范强制统一,大型项目维护成本远低于PHP。

二、Go环境搭建(对标PHP环境配置)

PHP开发时我们需要安装PHP解释器、配置环境变量、搭配Composer做包管理,Go的环境搭建逻辑类似,步骤如下:

1. 下载并安装Go SDK

  • 访问Go官方下载地址,根据自己的系统(Windows/macOS/Linux)下载对应版本的安装包。

  • Windows:双击安装包,一路默认即可(会自动配置环境变量);

  • macOS:可通过brew install go快速安装,或手动挂载dmg包安装;

  • Linux:通过wget下载压缩包,解压到/usr/local/go,并配置环境变量。

2. 验证安装(对标php -v)

打开终端/命令行,输入以下命令,若能输出Go版本则说明安装成功:

go version

这和PHP中执行php -v验证版本的逻辑完全一致。

3. 配置GOPATH(对标PHP的项目根目录)

GOPATH是Go的工作区目录,用于存放项目代码、编译产物和第三方依赖,类似PHP中我们约定的项目根目录(如wwwroot)。

  • 查看默认GOPATH:执行go env GOPATH

  • 自定义GOPATH:可通过系统环境变量配置(如Windows在“环境变量”中新增GOPATH,值为自定义目录)。

4. 包管理工具(对标Composer)

早期Go用GOPATH管理依赖,现在推荐使用Go Modules(Go1.11及以上版本支持),类似PHP的Composer:

  • 初始化项目模块:在项目目录执行go mod init 项目名(等价于PHP的composer init);

  • 安装第三方依赖:go get 依赖包地址(等价于PHP的composer require)。

三、第一个Go程序(对标PHP的Hello World)

PHP中我们写的第一个程序通常是echo "Hello World",Go的第一个程序也很简单,且能直观看到它和PHP的语法差异。

1. 新建项目与文件

  1. 在GOPATH的src目录下新建文件夹hello-go(或自定义目录);

  2. 新建文件main.go(Go的源文件后缀为.go,类似PHP的.php)。

2. 编写代码

打开main.go,写入以下代码:

// 声明main包,Go程序的入口必须在main包中
package main

// 导入fmt包,用于输入输出,类似PHP的echo/print_r
import "fmt"

// 入口函数main,类似PHP脚本的全局代码(无函数包裹时)
func main() {
    // 输出Hello World,对标PHP的echo "Hello World\n"
    fmt.Println("Hello World! 我是从PHP转Go的开发者")
}

3. 运行程序(对标PHP的两种运行方式)

Go运行程序有两种方式,对应PHP的“脚本直接运行”和“编译后运行”:

方式1:直接运行(对标php index.php

在项目目录执行命令,Go会自动编译并运行代码:

go run main.go

这和PHP直接执行php main.php的体验一致,无需手动编译。

方式2:编译为可执行文件(对标PHP的扩展编译)

执行以下命令,会生成一个可执行文件(Windows为.exe,Linux/macOS为无后缀文件):

go build main.go

生成后直接运行可执行文件即可:

  • Windows:main.exe

  • Linux/macOS:./main

这是Go的核心优势之一,编译后的文件可在无Go环境的机器上直接运行,而PHP必须依赖解释器。

四、PHP与Go核心语法初对比

为了帮你快速衔接,我们用表格对比两者的基础差异:

特性PHPGo
代码文件后缀.php.go
入口方式全局代码/指定入口文件必须在main包的main函数
变量声明无需声明类型(弱类型)必须声明类型(强类型)
输出方式echo/print_r/var_dumpfmt.Println/fmt.Printf
运行方式解释执行直接运行/编译为可执行文件

五、今日小结

今天我们完成了Go的环境搭建,写出了第一个Go程序,还初步对比了它和PHP的核心差异。作为PHP开发者,你可以把GOPATH理解为项目根目录、Go Modules理解为Composer、main函数理解为PHP的入口脚本,这样能快速建立认知关联。

明天我们将深入Go的变量与数据类型,用PHP的变量知识来类比学习,帮你快速掌握Go的基础语法。

标签: PHP转Go

相关文章

第八天:PHP开发者快速掌握Go并发编程 | Goroutine与Channel从入门到实战

作为PHP开发者,你知道实现并发需要依赖pcntl扩展创建多进程、pthreads扩展实现多线程,或借助Swoole/Workerman框架——步骤繁琐且资源消耗高。而Go内置原生并发支持:Gorou...

第四天:PHP 开发者快速掌握 Go 函数

作为PHP开发者,你早已熟悉function定义函数、参数传值/传引用、return返回结果的逻辑。Go的函数体系更严谨、功能更丰富——支持多返回值、命名返回值、可变参数,且函数本身可作为参数/返回值...

第七天:PHP开发者快速掌握Go错误处理与文件操作 | 从PHP异常/文件函数到Go实战

作为PHP开发者,你熟悉用try/catch处理异常、file_get_contents/file_put_contents读写文件、mkdir创建目录。Go没有“异常(Exception)”的概念,...

第五天:PHP开发者快速掌握Go数组、切片与Map | 从PHP数组到Go复合类型的转换

作为PHP开发者,你早已习惯了“万能数组”——既可以当索引数组用,也可以当关联数组用,长度动态变化、元素类型不限。而Go没有“万能数组”,而是将复合数据类型拆分为数组(array)、切...

第三天:PHP 开发者快速掌握 Go 运算符与流程控制

作为PHP开发者,你早已熟悉if/else、for、foreach等流程控制语法,以及+/-/*/、==/===等运算符。Go的运算符和流程控制语法与PHP高度相似,但也有不少“细节差异”——比如Go...

第六天:PHP开发者快速掌握Go结构体与接口 | 从PHP类/接口到Go面向对象

作为PHP开发者,你熟悉用class定义类、interface定义接口,通过实例化对象实现面向对象编程。Go没有“类(class)”的概念,但通过结构体(struct)实现类的属性封装,通过方法(me...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。