Go 的安装、配置与核心工具链速览
一、Go 的安装与配置
1.1 下载安装
| 平台 | 方式 |
|---|---|
| Windows | 下载 .msi 安装包:go.dev/dl |
| macOS | brew install go 或下载 .pkg |
| Linux | 下载 .tar.gz 解压至 /usr/local/go |
安装完成后验证:
go version
# go version go1.24.x windows/amd64
1.2 环境变量
Go 通过几个关键环境变量控制行为:
| 变量 | 作用 | 常用值 |
|---|---|---|
GOROOT | Go 安装目录(一般自动检测) | /usr/local/go |
GOPATH | 工作区目录(存放模块缓存和编译缓存) | ~/go(默认) |
GOBIN | go install 安装的可执行文件目录 | $GOPATH/bin |
GOPROXY | 模块代理地址(国内必改) | https://goproxy.cn,direct |
GO111MODULE | 模块模式开关(1.16+ 默认开启) | on |
国内加速配置(重要):
# 永久生效(PowerShell)
go env -w GOPROXY=https://goproxy.cn,direct
# 或设置环境变量
set GOPROXY=https://goproxy.cn,direct
1.3 工作区结构(GOPATH)
GOPATH/
├── bin/ # go install 编译出的可执行文件
├── pkg/ # 编译缓存
└── src/ # [已废弃] 早期放源码,现在用 Go Modules
Go 1.16+ 不再需要把代码放在
GOPATH/src下。使用 Go Modules 后,项目可以放在任意目录。
二、Go Modules — 包管理
Go Modules 是 Go 官方的依赖管理系统(Go 1.11 引入,1.16+ 默认开启)。
2.1 初始化模块
mkdir myproject && cd myproject
go mod init github.com/yourname/myproject
生成 go.mod 文件:
module github.com/yourname/myproject
go 1.24
2.2 常用命令
| 命令 | 作用 |
|---|---|
go mod init <module> | 初始化新模块 |
go mod tidy | 添加缺失的依赖,移除无用的依赖 |
go get <pkg> | 添加/更新依赖 |
go install <pkg> | 下载并安装可执行文件到 $GOBIN |
go mod download | 下载所有依赖到本地缓存 |
go mod vendor | 将依赖复制到 vendor/ 目录(离线方案) |
go mod graph | 查看依赖关系图 |
2.3 go.mod 与 go.sum
go.mod:声明模块路径、Go 版本、依赖列表及最低版本go.sum:所有依赖的哈希校验文件,确保依赖完整性(提交到 Git)
// go.mod 示例
module github.com/starer-code/myproject
go 1.24
require (
github.com/gin-gonic/gin v1.10.0
github.com/sirupsen/logrus v1.9.3
)
// indirect 注释表示间接依赖(被你依赖的包所依赖的)
require (
github.com/bytedance/sonic v1.11.6 // indirect
...
)
三、核心工具链
Go 自带一套强大的命令行工具,无需额外安装。
3.1 编译与运行
| 命令 | 作用 | 示例 |
|---|---|---|
go run | 编译并直接运行 | go run main.go |
go build | 编译生成可执行文件 | go build -o myapp.exe |
go install | 编译并安装到 $GOBIN | go install github.com/user/app@latest |
交叉编译(Go 的一大亮点):
# Linux 上编译 Windows 程序
set GOOS=windows
set GOARCH=amd64
go build -o myapp.exe
# 支持的 OS:linux, windows, darwin, freebsd...
# 支持的 ARCH:amd64, arm64, arm, 386...
3.2 测试
go test ./... # 运行所有测试
go test -v ./... # 详细输出
go test -run TestFuncName # 运行指定测试函数
go test -cover # 显示覆盖率
go test -bench=. # 运行基准测试
go test -race # 检测竞态条件
测试文件以
_test.go结尾,测试函数以Test开头。详细内容见 04-工程化/02-测试。
3.3 代码检查与格式化
| 命令 | 作用 |
|---|---|
go fmt ./... | 格式化所有代码(基于 gofmt) |
go vet ./... | 静态分析,发现常见错误 |
golint / golangci-lint | 更全面的代码 lint(需额外安装) |
Go 的哲学:一个项目只有一种风格。
gofmt是强制的,没有格式争论。
3.4 其他常用命令
| 命令 | 作用 |
|---|---|
go doc <pkg> | 查看包的文档 |
go list -m all | 列出当前模块的所有依赖 |
go env | 查看/设置 Go 环境变量 |
go generate | 运行代码中的 //go:generate 指令 |
四、编辑器与 IDE
4.1 VS Code + Go 插件
- 安装 VS Code
- 安装扩展:
Go(由 Google 官方维护) - 安装工具链(首次打开
.go文件时会提示):gopls(语言服务器,提供补全/跳转/重构)dlv(调试器)staticcheck(静态分析)goimports(自动管理 import)
4.2 GoLand
JetBrains 出品的 Go 专业 IDE,开箱即用,适合重度 Go 开发。
4.3 选择建议
| 场景 | 推荐 |
|---|---|
| 初学/轻量开发 | VS Code + Go 插件(免费) |
| 大型项目/企业开发 | GoLand(付费,功能全面) |
五、第一个程序
5.1 Hello World
package main
import "fmt"
func main() {
fmt.Println("Hello, Go!")
}
go run main.go
# Hello, Go!
5.2 逐行解析
| 代码 | 说明 |
|---|---|
package main | 声明包名,main 包表示可独立运行的程序 |
import "fmt" | 导入标准库 fmt 包(格式化 I/O) |
func main() | 程序入口函数,必须在 main 包中 |
fmt.Println(...) | 打印一行文本到标准输出 |
5.3 关键概念预告
- 每个 Go 文件必须属于一个包(
package xxx) - 可执行程序的入口包必须是
main - 大括号
{不能另起一行(Go 强制的代码风格) - 分号自动插入(Go 词法分析器自动处理,不需要手写)
六、本节要点速查
| 概念 | 要点 |
|---|---|
| 安装 | go.dev 下载,验证 go version |
| GOPROXY | 国内必须设置为 https://goproxy.cn,direct |
| Go Modules | go mod init → go mod tidy → 开发 |
| go.mod | 模块路径 + 依赖版本声明 |
| go run | 开发时快速运行 |
| go build | 生产环境编译二进制 |
| go test | 内置测试框架,_test.go 文件 |
| go fmt | 代码格式化,强制统一风格 |
| gopls | 语言服务器,提供智能补全和跳转 |
| 交叉编译 | GOOS + GOARCH 即可跨平台编译 |
下一篇:02-变量常量与类型
豫公网安备41108202000982号