Golang教程
推荐链接:
所有版本:https://go.dev/dl/
发布历史:https://go.dev/doc/devel/release
搜 索 库:https://pkg.go.dev/
标 准 库:https://pkg.go.dev/std
Go 命 令:https://pkg.go.dev/cmd/go
用户手册:https://go.dev/doc/
Go 语言高效编程:https://go.dev/doc/effective_go
Go 编程语言规范:https://go.dev/ref/spec
Go by Example:https://gobyexample.com/ 、https://gobyexample-cn.github.io/
Go 菜鸟教程:https://www.runoob.com/go/go-tutorial.html
GoLand 下载:https://www.jetbrains.com/go/download/other.html
安装
下载解压版:go1.24.2.windows-amd64.zip
GUI配置环境变量:
1 | GOROOT=D:\Program\go\ |
Go环境变量
命令 | 作用 |
---|---|
go env |
查看所有当前 Go 环境变量 |
go env VAR |
查看单个变量(如 go env GOPATH ) |
go env -w VAR=value |
写入配置文件,永久设置变量(Go 1.13+ 支持)。 即将变量写入本地配置文件(通常位于 $HOME/.config/go/env 或 %USERPROFILE%\go\env )。 |
go env -u VAR |
取消变量设置,即从配置文件中删除(恢复默认行为) |
go env -json |
以 JSON 格式输出所有变量,适合脚本或工具 |
1 | # GOPATH 指定工作目录的根。1、存放依赖包缓存(比如在 $GOPATH/pkg/mod 下);2、存放 go install 安装后的二进制文件(在 $GOPATH/bin)。 |
项目结构
1 | ├─01 |
go.mod—模块定义文件(git管理)
这是 Go 模块的核心文件,描述项目的模块路径、依赖项及其版本。
主要作用:
- 声明模块名(通常是项目的 import path)
- 指定 Go 版本(go 1.20 等)
- 声明依赖的第三方模块和版本(
require
) - 可包含
replace
替换依赖模块路径(本地调试等)
示例内容:
1 | module example/hello |
go.sum—校验和文件(git管理)
记录每个依赖模块及其版本的哈希校验和,用于验证依赖包的一致性和完整性。
作用:
- 防止被篡改的模块被编译
- 确保团队成员或 CI 下载的是一致的依赖
- 自动生成,不建议手动修改
示例内容:
1 | rsc.io/quote v1.5.2 h1:w5fcysjrx7yqtD/aO+QwRjYZOKnaM9Uh2b40tElTs3Y= |
go.work—工作区文件(可选,Go 1.18+)
用于管理多个 Go 模块组成的工作区,支持跨模块开发,解决 monorepo 场景下的依赖问题。
使用场景:
- 一个项目下有多个模块(例如微服务或工具库),需要一起开发和测试
- 替代
replace
用于本地联调多个模块
示例内容:
1 | go 1.24 |
命令清单
官网学习中遇到的命令顺序
1 | go mod init example/hello |
初始化与模块管理
命令 | 说明 |
---|---|
go mod init <模块名> |
初始化模块(生成 go.mod) |
go mod tidy |
自动添加/删除依赖 |
go mod download |
下载 go.mod 中声明的所有依赖到本地 |
go mod vendor |
将依赖复制到 vendor/ 目录中 |
go mod verify |
校验模块缓存 |
go list -m all |
查看所有依赖模块 |
构建与运行
命令 | 说明 |
---|---|
go run <file.go> |
编译并运行 Go 源码文件 |
go run . |
编译并运行当前目录的 main 包 |
go build |
编译当前包,生成可执行文件(二进制文件) |
go build -o myapp |
指定输出文件名 |
go install |
编译并安装当前模块(安装到 $GOBIN 或 $GOPATH/bin ) |
go clean |
清除当前模块下的构建产物,包括编译生成的二进制文件和中间文件 |
go clean -modcache |
清除全局的模块缓存(即下载的第三方依赖) |
测试
命令 | 说明 |
---|---|
go test |
运行当前包的测试用例 |
go test -v |
显示详细的测试输出 |
go test ./... |
递归测试当前模块的所有包(包括子包) |
go test -cover |
查看测试覆盖率 |
go test -bench . |
执行基准测试(以 Benchmark 开头的函数) |
代码工具
命令 | 说明 |
---|---|
go fmt ./... |
格式化所有 Go 文件 |
go vet |
静态代码分析(找潜在 bug)(推荐) |
go doc <包名/函数> |
查看文档,如:go doc fmt.Println |
go list |
列出当前模块信息 |
go list -m -u all |
列出当前模块依赖的所有模块,以及每个模块的最新版本: |
go list -m -u example.com/theirmodule |
显示特定模块的最新版本 |
go list -f '{{.Target}}' |
打印可编译包的目标文件路径 |
go list -json |
输出包的所有结构化信息(JSON 格式) |
工具命令
命令 | 说明 |
---|---|
go version |
查看 Go 版本 |
go env |
查看 Go 环境变量 |
go env -w GOBIN=C:\path\to\your\bin |
指定 Go 程序安装目录 |
go help <命令> |
查看某个命令帮助,比如 go help mod |
第三方包安装
命令 | 说明 |
---|---|
go get . |
添加模块中某个包的所有依赖项 |
go get <module> |
安装或升级某个包(Go 1.17 及以前) |
go install <module>@latest |
Go 1.18+ 推荐方式安装工具包 |
示例:安装一个工具(如静态分析器)
1 | // golangci-lint 是 Go 语言中最流行的 静态代码分析工具,它相当于一个多合一的“代码质量检查器” |