goroot和gopath是干嘛的?

  1. 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 逐渐变得不那么重要,特别是在新项目中。

  1. 总结
    GOROOT:指定 Go 安装的目录,包含标准库和工具链,通常不需要手动设置。

GOPATH:指定 Go 工作空间的目录,包含你自己的代码、依赖包和编译后的文件。Go 1.11 之前,Go 的所有代码都必须在 GOPATH/src 下。

Go Modules(从 Go 1.11 开始):提供了一种新的依赖管理方式,摆脱了 GOPATH 的限制,可以在任何位置开发 Go 项目。现在推荐使用 Go Modules 进行依赖管理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值