2、Go开发环境搭建:Go SDK安装与配置、GOPATH与Go Modules介绍、第一个Go程序(Hello World)
说实话,每次带新人入行Go,我都要先帮他们搞定环境。这一步看似简单,但坑是真不少。我自己就曾经因为环境变量配错,折腾了整整一个下午。今天咱们就把这事彻底捋清楚。
2.1 Go SDK安装与配置
先说说SDK安装。Go的安装包可以从官网下载,支持Windows、macOS、Linux三大平台。我个人习惯用Linux开发,但Windows和macOS也完全没问题。
Windows安装
下载.msi安装包,双击运行。默认路径是C:\Go。安装完成后,打开命令行输入go version,如果看到版本号,说明安装成功。
macOS安装
用Homebrew最省事:
brew install go
或者下载.pkg安装包手动安装。我个人推荐用Homebrew,升级方便。
Linux安装
下载tar.gz包,解压到/usr/local:
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz
然后配置环境变量。打开~/.bashrc或~/.zshrc,添加:
export PATH=$PATH:/usr/local/go/bin
执行source ~/.bashrc使其生效。
验证安装
go version
# 输出示例:go version go1.21.0 linux/amd64
嗯,看到这个输出,基本就稳了。
2.2 GOPATH与Go Modules
这里我要重点说说。很多初学者被GOPATH和Go Modules搞晕过。说白了,它们都是Go用来管理代码和依赖的机制。
GOPATH是什么?
在Go 1.11之前,所有Go代码都必须放在GOPATH目录下。GOPATH默认是$HOME/go。结构是这样的:
$HOME/go/
├── bin/ # 编译后的可执行文件
├── pkg/ # 编译后的包文件
└── src/ # 源代码
└── github.com/
└── 用户名/
└── 项目名/
说实话,这种模式挺别扭的。你想想看,所有项目都挤在一个目录下,版本管理也麻烦。我在早期项目中就吃过这个亏——两个项目依赖同一个库的不同版本,结果冲突了。
Go Modules:新时代的解决方案
从Go 1.11开始,官方推出了Go Modules。它允许你在项目目录外开发,每个项目独立管理依赖版本。说白了,就是每个项目都有自己的go.mod文件,记录依赖信息。
启用Go Modules很简单,设置环境变量:
export GO111MODULE=on
从Go 1.16开始,这个变量默认就是on了。所以新版本基本不用操心。
go.mod文件长什么样?
module myproject
go 1.21
require (
github.com/gin-gonic/gin v1.9.0
github.com/go-sql-driver/mysql v1.7.0
)
这里module指定了模块名,require列出了依赖。每次执行go mod tidy,Go会自动整理依赖关系。
2.3 第一个Go程序:Hello World
环境搭好了,咱们来写第一个程序。这是每个Go开发者的起点。
创建项目目录
mkdir hello-world
cd hello-world
go mod init hello-world
执行go mod init后,会生成go.mod文件。这个文件就是项目的身份证。
编写代码
创建main.go文件:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
代码很简单,但有几个要点:
package main:声明这是一个可执行程序import "fmt":引入标准库的fmt包,用于格式化输出func main():程序入口函数fmt.Println:打印并换行
运行程序
go run main.go
# 输出:Hello, World!
看到输出了吧?恭喜你,第一个Go程序跑起来了。
编译成可执行文件
go build -o hello main.go
./hello
# 输出:Hello, World!
go build会生成一个二进制文件。你可以把它复制到任何同平台的机器上运行,不需要安装Go环境。这就是Go的静态编译特性。
go build -ldflags="-s -w"可以减小生成文件的大小。我在部署生产环境时经常这么干。
2.4 常见问题与避坑指南
最后分享几个我踩过的坑:
- 代理问题: 国内访问Go官方仓库慢。设置代理:
go env -w GOPROXY=https://goproxy.cn,direct - 版本冲突: 不同项目用不同Go版本?用
go install golang.org/dl/go1.20@latest安装多版本 - 环境变量不生效: 修改
.bashrc后记得source,或者重启终端
我曾经因为忘记设置GOPROXY,下载依赖等了半小时。后来学乖了,装好Go第一件事就是配代理。
好了,环境搭建就到这里。下一章咱们聊聊Go的基础语法,包括变量、数据类型和控制结构。到时候见。