第一天:从PHP到Golang,零基础入门的环境搭建与第一个程序
作为一名PHP开发者,当你决定接触Golang(简称Go)时,首先会好奇它和熟悉的PHP有哪些差异,以及如何快速迈出第一步。今天我们就从环境搭建和第一个Go程序入手,用PHP开发者熟悉的思维来解锁Go语言的入门姿势。
一、为什么PHP开发者要学Go?
在开始之前,先明确Go的核心优势,这能帮你理解它和PHP的定位区别:
性能差异:PHP是解释型脚本语言,运行依赖Zend引擎,在高并发场景下性能瓶颈明显;Go是编译型语言,直接编译为机器码,执行效率接近C/C++,且天生支持高并发。
并发模型:PHP通常依赖FPM进程模型实现并发,资源占用高;Go的Goroutine(协程)轻量且高效,几万甚至几十万协程也能轻松承载。
部署方式:PHP项目部署需要搭配Web服务器(Nginx/Apache)和PHP-FPM;Go项目编译后是单一可执行文件,无需依赖运行环境,部署极其便捷。
工程化能力: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. 新建项目与文件
在GOPATH的
src目录下新建文件夹hello-go(或自定义目录);新建文件
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核心语法初对比
为了帮你快速衔接,我们用表格对比两者的基础差异:
| 特性 | PHP | Go |
|---|---|---|
| 代码文件后缀 | .php | .go |
| 入口方式 | 全局代码/指定入口文件 | 必须在main包的main函数 |
| 变量声明 | 无需声明类型(弱类型) | 必须声明类型(强类型) |
| 输出方式 | echo/print_r/var_dump | fmt.Println/fmt.Printf |
| 运行方式 | 解释执行 | 直接运行/编译为可执行文件 |
五、今日小结
今天我们完成了Go的环境搭建,写出了第一个Go程序,还初步对比了它和PHP的核心差异。作为PHP开发者,你可以把GOPATH理解为项目根目录、Go Modules理解为Composer、main函数理解为PHP的入口脚本,这样能快速建立认知关联。
明天我们将深入Go的变量与数据类型,用PHP的变量知识来类比学习,帮你快速掌握Go的基础语法。
