Go 的安装、配置与核心工具链速览


一、Go 的安装与配置

1.1 下载安装

平台方式
Windows下载 .msi 安装包:go.dev/dl
macOSbrew install go 或下载 .pkg
Linux下载 .tar.gz 解压至 /usr/local/go

安装完成后验证:

go version
# go version go1.24.x windows/amd64

1.2 环境变量

Go 通过几个关键环境变量控制行为:

变量作用常用值
GOROOTGo 安装目录(一般自动检测)/usr/local/go
GOPATH工作区目录(存放模块缓存和编译缓存)~/go(默认)
GOBINgo 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编译并安装到 $GOBINgo 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 插件

  1. 安装 VS Code
  2. 安装扩展:Go(由 Google 官方维护)
  3. 安装工具链(首次打开 .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 Modulesgo mod init → go mod tidy → 开发
go.mod模块路径 + 依赖版本声明
go run开发时快速运行
go build生产环境编译二进制
go test内置测试框架,_test.go 文件
go fmt代码格式化,强制统一风格
gopls语言服务器,提供智能补全和跳转
交叉编译GOOS + GOARCH 即可跨平台编译

下一篇:02-变量常量与类型