- GOROOT — Go 工具链和标准库的路径
GOROOT 指定了 Go 编译器、工具链以及标准库所在的目录。它告诉 Go 工具在哪里找到 Go 的安装位置和标准库。
作用:它用于指定 Go 的安装目录,Go 工具链(如编译器、go run、go build 等)会通过 GOROOT 环境变量找到 Go 语言的标准库和工具链。
默认路径:在安装 Go 语言时,GOROOT 会自动设置为 Go 的安装目录。例如,如果你是通过官方安装包安装 Go,GOROOT 默认路径通常是:
Linux/Mac: /usr/local/go
Windows: C:\Go
注意:你通常不需要手动设置 GOROOT,除非你有特殊的自定义安装。Go 会自动根据安装路径设置 GOROOT。
查看 GOROOT 值
echo $GOROOT
2. GOPATH — Go 工作空间的路径
GOPATH 是 Go 的工作空间路径,它告诉 Go 工具在哪里存放 用户代码 和 第三方依赖。它通常用于存放你自己写的 Go 源代码、编译生成的包、以及下载的第三方包。
作用:GOPATH 定义了 Go 的工作目录,用于存放你的源代码(src)、已编译的包(pkg)、以及编译后生成的可执行文件(bin)。
默认路径:如果你没有显式设置 GOPATH,它的默认值通常是:
Linux/Mac: $HOME/go
Windows: %USERPROFILE%\go
这个默认路径表示用户的家目录下会有一个 go 文件夹,用来存放所有的 Go 项目和依赖。
查看 GOPATH 值
echo $GOPATH
GOPATH 目录结构
在 GOPATH 下会有三个主要子目录:
src/:存放源代码(.go 文件)。通常,你的 Go 项目会放在这个目录下。
pkg/:存放编译后的包文件(.a 文件)。这是编译时生成的文件,Go 会用它们来加速编译过程。
bin/:存放编译后的可执行文件。使用 go install 命令编译代码时,生成的二进制文件会存放在这里。
目录结构:
$GOPATH/
├── bin/ # 存放 Go 编译后的可执行文件
├── pkg/ # 存放编译好的包文件
└── src/ # 存放 Go 源代码文件
└── github.com/
└── username/
└── project/
└── main.go
3. GO111MODULE — 新的模块化支持(Go 1.11 及以后)
从 Go 1.11 开始,Go 引入了 Go Modules,它是一种新的依赖管理机制,旨在替代传统的 GOPATH 方式。在启用了 Go Modules 后,Go 项目的依赖管理不再依赖于 GOPATH,而是依赖于项目目录中的 go.mod 文件。
Go Modules 允许你在任何地方工作,不再需要将代码放在 GOPATH/src 下。你可以在任何文件夹中使用 go mod 命令来管理项目的依赖。
在启用了 Go Modules 的情况下,GOPATH 的作用变得不那么重要了。你可以使用 GO111MODULE=on 来强制启用 Go Modules,或者 GO111MODULE=off 来禁用它(返回传统的 GOPATH 方式)。
现代开发:推荐使用 Go Modules
Go Modules 已经成为 Go 语言推荐的包管理方式。Go 1.13 之后,默认启用 Go Modules,GOPATH 逐渐变得不那么重要,特别是在新项目中。
- 总结
GOROOT:指定 Go 安装的目录,包含标准库和工具链,通常不需要手动设置。
GOPATH:指定 Go 工作空间的目录,包含你自己的代码、依赖包和编译后的文件。Go 1.11 之前,Go 的所有代码都必须在 GOPATH/src 下。
Go Modules(从 Go 1.11 开始):提供了一种新的依赖管理方式,摆脱了 GOPATH 的限制,可以在任何位置开发 Go 项目。现在推荐使用 Go Modules 进行依赖管理。
1229

被折叠的 条评论
为什么被折叠?



