为什么需要gopath和goroot

在 Go 语言中,GOPATH 和 GOROOT 是两个重要的环境变量,它们的作用分别如下:

1、GOPATH

Go 语言采用工作空间的概念,即将源码、依赖和编译后的二进制文件等放在同一个目录下,这个目录就是工作空间。GOPATH 环境变量指定了工作空间的路径。在工作空间中,可以包含多个项目,每个项目都应该有自己的目录结构。通常情况下,GOPATH 应该指向一个目录,该目录下包含了所有项目的根目录。

通过 GOPATH 环境变量,可以让 Go 语言知道应该从哪个目录中加载包。Go 语言的包管理机制会从 GOPATH 指定的路径下的 src 目录中查找相应的包,然后编译和链接这些包,生成可执行文件或库文件。因此,正确设置 GOPATH 环境变量非常重要,否则 Go 语言的编译、构建和运行可能会出现各种问题。

2、GOROOT

Go 语言自带了一些常用的标准库,例如 fmt、os、net 等,这些库被称为 Go 标准库。GOROOT 环境变量指定了 Go 标准库的安装路径。在编译和运行程序时,Go 语言需要使用这些标准库,因此需要知道标准库的路径。

通过设置 GOROOT 环境变量,可以让 Go 语言知道应该从哪个目录中加载标准库。如果没有设置 GOROOT 环境变量,Go 语言会默认从安装程序指定的目录中加载标准库。因此,如果要手动安装 Go 标准库,应该确保该目录包含了正确版本的标准库文件,并将 GOROOT 环境变量设置为该目录的路径。

综上所述,设置 GOPATH 和 GOROOT 环境变量可以帮助 Go 语言正确地加载包和标准库,从而保证程序的正确性和可靠性。

Go 1.11 之后还需要设置gopath吗?

在 Go 1.11 之后,Go 工具链引入了 Go Modules 机制,这是一种新的依赖管理方式,可以让 Go 程序更加轻松地管理依赖,解决了之前 GOPATH 环境变量所带来的一些问题。因此,在使用 Go 1.11 及其之后的版本时,不再需要设置 GOPATH 环境变量。

在 Go Modules 机制下,每个项目都可以拥有自己的依赖管理,不再需要将所有的项目都放在 GOPATH 下面。Go Modules 机制会自动下载和管理项目所需的依赖,不再需要手动下载和安装。可以使用 go mod 命令来初始化、添加、升级或删除项目的依赖。

需要注意的是,虽然在 Go 1.11 及其之后的版本中不再需要设置 GOPATH 环境变量,但是如果你使用的是旧的项目,可能仍然需要设置 GOPATH 环境变量来兼容旧的依赖管理方式。如果你的项目使用了 Go Modules,建议不要设置 GOPATH 环境变量,而是使用 Go Modules 的方式来管理依赖。

如果没有设置gopath go install 安装的模块在哪里
go install$GOBIN$GOBIN$GOBIN%USERPROFILE%\go\bin$GOBIN$HOME/go/bin
-o$GOBIN

需要注意的是,如果没有设置 GOPATH 环境变量,Go 语言将无法正确加载和管理包,可能会导致编译和运行程序时出现各种问题。因此,在使用 Go 语言时,建议设置正确的 GOPATH 环境变量,并将源码、依赖和编译后的二进制文件等放在同一个工作空间中。

原文链接:https://duoke360.com/post/5799