Golang Go语言中GOPATH一般是怎么管理的

Golang Go语言中GOPATH一般是怎么管理的

在开发 go 项目的时候,GOPATH 一般是怎么管理?最佳实践应该是什么样的?

只用唯一的一个全局目录?(比如默认的 $HOME/go )

还是每个项目是单独的 GOPATH,切换到对应项目的时候,就修改下 GOPATH 的值?如果这样的话? GOPATH 怎么修改?手动修改?还是通过 shell hooks 或其他工具自动修改?

11 回复

推荐 go mod

更多关于Golang Go语言中GOPATH一般是怎么管理的的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


GOPATH 可以通过 shell 脚本修改, 现在新的用 go mod,可以了解一下。

开启 go module 的情况下,不需要理会 GOPATH

0202 年了,直接上 go mod 就完事

vendor gomod 也挺好,但有时候会抽风

推荐 go mode
但我还是把项目放在 GOPATH 下,其他地方自动补全好像有点问题

双 gopath 最佳,GOPATH=/root/go:/data/go

/root/go 作为第一个 gopath,所有 goge 的 t 第三方依赖存放在这作为本地依赖仓库,在 /data/go 里面可以编辑自己代码作为 workspaces 。

gopath 全局版本对于多项目组织更好,gomod 可以锁定依赖版本用于单项目开发。gomod 不适合多项目协同,从 11 开始一直没有解决。

说代理问题的 gomod 有 goproxy 的都是采集。

第三方依赖最好 vendor 下 ,例如 iris 篡改 git 历史就删了老版本,没法编译旧项目了,引以为戒。

感谢各位,go mod 了解了一下,这个看着顺眼多了

在Go语言中,GOPATH是一个关键的环境变量,用于指定Go编译器的工作区间,是存放Go项目代码的文件路径。以下是关于GOPATH管理的一些要点:

GOPATH的组成

GOPATH通常包含三个子目录:

  • bin:存放编译生成的二进制文件。
  • pkg:存放编译好的包文件。
  • src:存放项目的源代码文件。

GOPATH的设置

在Go语言早期版本中,GOPATH需要手动设置,且项目代码必须放在GOPATH下的src目录中。现在,虽然Go Modules已经成为更主流的依赖管理方案,但GOPATH仍然可以通过环境变量来设置。

GOPATH的管理

  • 单一GOPATH:对于小型项目或简单场景,可以设置一个全局的GOPATH,所有项目共享这个工作空间。
  • 多个GOPATH:对于大型项目或复杂场景,可以设置多个GOPATH来分别管理不同的项目,以避免项目间的依赖冲突。

注意事项

  • GOPATH目录和Go的安装目录(GOROOT)不能是同一个目录。
  • 在使用Go Modules时,虽然不再严格依赖于GOPATH,但了解GOPATH的配置和管理仍然有助于理解Go项目的结构和依赖关系。

综上所述,GOPATH在Go语言项目中扮演着重要的角色,合理管理GOPATH有助于项目的组织、依赖管理和编译执行。

回到顶部