GO基础总结
环境搭建
通过 go version 查看安装的版本
➜ go version
go version go1.23.0 windows/amd64
环境变量
这三个是搭建 Go 开发环境最基本、必须了解的变量。
GOROOT
Go 语言安装的根目录。它指向 Go 的 SDK 所在位置,其中包含标准库、编译器、链接器等所有自带的工具。默认值:通常为 /usr/local/go(Unix-like)或 C:\Go(Windows)。现代版本的 Go 通常能自动设置,一般不需要手动修改。除非你安装了多个 Go 版本并需要切换。
GOPATH
含义:在 Go Modules 出现之前,这是所有 Go 代码的工作目录。它有三个子目录:src(源代码)、pkg(编译后的包文件)、bin(编译后的可执行文件)。自 Go 1.11 引入 Modules 后,GOPATH 的重要性已大大降低。但它仍然存在,主要用于存放通过 go install 安装的可执行工具(在 $GOPATH/bin 下)以及缓存旧版本(Go 1.4及之前)的包。默认值:$HOME/go(Unix-like)或 %USERPROFILE%\go(Windows)。
GOBIN
执行 go install 命令编译生成的可执行文件的存放目录。运行 go install 时,生成的可执行文件会放在此目录下。为了能在终端任何地方直接运行这些工具,强烈建议将 $GOBIN 添加到你的系统 PATH 环境变量中。默认值:默认为 $GOPATH/bin。你可以单独设置它,例如 export GOBIN=$HOME/.local/bin。
命令行工具
go env
会列出所有与 Go 相关的环境变量及其当前值。Windows下输出内容类似于下面这样:
set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\lenovo\AppData\Local\go-build
....
set GOENV=C:\Users\lenovo\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
查看特定的环境变量:go env VARNAME,在 Windows 的 Command Prompt 或 PowerShell 中,用法基本相同。只是变量名的大小写不敏感,但通常保持大写即可。
➜ go env GOPATH # 输出: /Users/username/go
➜ go env GOROOT # 输出: /usr/local/go
➜ go env GOPROXY # 输出: https://goproxy.cn,direct
➜ go env GOPATH GOROOT GOOS GOARCH
C:\Users\lenovo\go
D:\Develop\Go
windows
amd64
使用 -json 标志可以以 JSON 格式输出所有环境变量
go env -json
# 获取特定变量的 JSON 值
go env -json GOROOT GOPROXY
常用环境变量的含义如下
| 变量名 | 含义 | 示例值 |
|---|---|---|
GOPATH |
工作区目录 | /Users/username/go |
GOROOT |
Go 语言安装目录 | /usr/local/go |
GOBIN |
可执行文件安装目录 | $GOPATH/bin |
GOOS |
目标操作系统 | darwin, linux, windows |
GOARCH |
目标架构 | amd64, arm64, 386 |
GOPROXY |
模块代理 | https://goproxy.cn,direct |
GOMODCACHE |
模块缓存目录 | $GOPATH/pkg/mod |
CGO_ENABLED |
是否启用 CGO | 1 (启用) 或 0 (禁用) |
go install
基本语法
参见:https://www.cnblogs.com/vonlinee/p/19005628
包管理
使用import关键字,导入要使用的标准库包或第三方依赖包。
import "a/b/c"
import "fmt"
以下 3 种依赖管理方式
GOPATH模式
GOPATH 模式是 Go 语言在 1.11 版本之前唯一的工作模式,已被 Go Modules 取代
GOPATH 模式是一种,它要求所有的 Go 代码(包括你自己的项目和第三方依赖库)都必须放在一个单一的工作区目录下,这个目录就是 GOPATH。
它没有版本的概念,你直接使用代码库的最新代码(默认是 master 分支或默认分支)。
go vendor
go module
Go Modules 是现代的依赖管理系统,以下变量控制其行为。
GOMODCACHE- 含义:Go Module 的缓存目录。所有下载的依赖包(包括特定版本)都会存储在这里。
- 默认值:
$GOPATH/pkg/mod。 - 用途:你可以通过设置此变量来改变依赖包的缓存位置,例如将其放在更大的硬盘分区上。
GOPROXY- 含义:Go Module 代理服务器的地址。用于加速依赖包的下载和提供稳定的可用性。
- 值:是一个逗号分隔的 URL 列表,也可以是特殊值
direct(直连代码仓库)或off(禁用网络)。 - 推荐设置:
https://goproxy.cn,direct(适用于中国大陆,将goproxy.io或官方proxy.golang.org替换为国内镜像源以大幅提升下载速度)。 - 工作流程:Go 工具会按顺序尝试列表中的代理,直到成功为止。最后的
direct表示如果所有代理都失败,则直接尝试连接版本控制系统(如 GitHub)。
GOSUMDB- 含义:Go Checksum Database 的地址。用于验证下载的依赖包是否未被篡改,确保安全。
- 默认值:
sum.golang.org。 - 注意:在中国大陆访问此数据库可能较慢或不可用。如果你使用了可信的国内代理(如
goproxy.cn),它通常会配备自己的校验数据库,通常不需要单独修改。在特殊内网环境下可设置为off来关闭校验(不推荐)。
GOPRIVATE/GONOPROXY/GONOSUMDB- 含义:用于控制哪些私有模块(例如公司内部的 GitLab 仓库)不通过公共代理 (
GOPROXY) 下载,也不进行公共校验和校验 (GOSUMDB)。 - 值:逗号分隔的模块路径前缀 glob 模式列表(如
*.company.com,github.com/yourname/private-repo)。 - 关系:
GOPRIVATE设置了,就自动同时设置了GONOPROXY和GONOSUMDB。- 你也可以单独精细控制
GONOPROXY和GONOSUMDB。
- 含义:用于控制哪些私有模块(例如公司内部的 GitLab 仓库)不通过公共代理 (

浙公网安备 33010602011771号