Golang Go语言中 GOPATH 设置问题求解

发布于 1周前 作者 sinazl 来自 Go语言

Golang Go语言中 GOPATH 设置问题求解

就是用 vs code,设置了 gopath 是当前目录路径,GO: current GOPATH 也显示正确。 但用go env GOPATH,仍然是默认的 GOPATH

这就非常奇怪了

而且很显然,go get 也都安装到默认路径下了

哪位能指点一下吗?谢谢

微信截图_20190321192902.png


更多关于Golang Go语言中 GOPATH 设置问题求解的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

15 回复

go mod 已经摆脱 GOPATH 了吧,能不用就不用吧

一定要用的话,直接指定系统环境变量

更多关于Golang Go语言中 GOPATH 设置问题求解的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


windows 应该要设置环境变量吧?以 go env 为标准

2 楼说的对哈,要在 windows 下面修改环境变量的,默认是在当前用户下面的目录,可以去改一下,我刚试了一下生效了

添加环境变量 GOPATH,指向你的工作空间

GOPATH 了解一下就好,我也推荐一波 go mod

新人不推荐上 vscode 虽然我目前用着这个,但是踩了 N 多的坑。
还是 goland 省心

go mod 依然是很愚蠢的东西, 它还是下载在 GOPATH 下面,其实应该像 maven 放到 ~/.gopkg 然后编译的时候挪到当前项目的 .gopkg 下面。
说是可以控制版,多个项目依赖同一库的不同版本时,冲突是怎么解决的

有全局 GOPATH,也有项目 GOPATH 的吧?

老哥 没喷对吧 GOPATH 跟.m2 不一样吗 多个项目依赖同一库的不同版本这不冲突啊

会有版本号的啊…

vscode 配置 go interfere gopath,可以实现自动切换 gopath。
还有,当前 gopath 还是免不了的。gocode-mod 速度巨慢,三个 golang language server 的实现也还没完善 go module 的支持。
PS: goland 虽然有缓存,补全速度快点,相比普通补全,go module 的补全、跳转依然慢了很多

生态已经形成,gopath 没个十几二十年是抹不掉的,不想看到的话,自己把它定义到看不见的地方吧

依赖同一库的不同版本可以通过把多个库同时编译进二进制文件解决,貌似当前也还有点问题

嗯,这个的确没喷对,不好意思,我原来以为他是通过 checkout 的方式来切换版本,实际测试发现目录名带了版本号的。不过 GOPATH 可没喷错

在Go语言中,GOPATH 是一个环境变量,用于指定你的工作区(workspace)位置。从Go 1.11版本开始,Go引入了模块支持(go.mod),逐渐弱化了 GOPATH 的重要性,但在某些场景下,特别是旧项目或特定需求中,仍需正确设置 GOPATH

设置 GOPATH

  1. 环境变量设置

    • 在Unix/Linux/macOS上,你可以在终端中运行 export GOPATH=/your/path,其中 /your/path 是你想设置为工作区的目录。
    • 在Windows上,你可以通过命令行设置 set GOPATH=C:\your\path,或者通过系统环境变量设置。
  2. 检查设置

    • 使用 go env GOPATH 命令来验证 GOPATH 是否设置成功。
  3. 工作区结构

    • GOPATH 下通常包含三个子目录:src(存放源代码)、pkg(存放编译后的包文件)、bin(存放可执行文件)。

注意事项

  • 在使用模块(module)支持的项目中,GOPATH 的重要性降低,因为模块项目可以位于任意位置,无需在 GOPATH/src 下。
  • 确保 GOPATH 不与你的Go模块项目路径重叠,以避免潜在的冲突。
  • 如果你在使用较新版本的Go(如Go 1.16及以上),并且项目使用了 go.mod 文件,建议尽量依赖模块系统来管理依赖,而不是依赖 GOPATH

希望这些信息能帮助你解决 GOPATH 设置的问题。

回到顶部