V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
morize
V2EX  ›  问与答

使用 Go Module 后 GOPATH 的作用?

  •  
  •   morize · 2020-08-08 23:57:00 +08:00 · 2152 次点击
    这是一个创建于 1566 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这两天开始自学 Go,装的 1.14.6 版本。看教程的时候看到官方推荐使用 Go Module 进行依赖管理,于是设置了 export GO111MODULE=on,项目文件可以不用放在 GOPATH/src 下,依赖也不会出现在 GOPATH/pkg 下。但是这样操作之后,GOPATH 还有什么作用?还有 Goland 设置里面的 Global GOPATH 和 Project GOPATH 的作用,看了官网的解释以后还不是很明白。
    7 条回复    2020-08-10 15:54:21 +08:00
    CEBBCAT
        1
    CEBBCAT  
       2020-08-09 01:38:32 +08:00   ❤️ 1
    我也搞不太明白 GOPATH 之类的,但是好像 Go Module 的原文件都被放在了${GOPATH}/pkg/mod 下了
    lrh3321
        2
    lrh3321  
       2020-08-09 07:42:51 +08:00 via Android
    感觉是,${GOPATH}/pkg/mod 下面缓存了一堆包的 git 裸仓库,根据 go.mod 文件再 checkout 出对应版本的包缓存在里面,编译的时候自动使用对应的版本
    sadfQED2
        3
    sadfQED2  
       2020-08-09 09:26:28 +08:00 via Android
    使用 go mod 后就能用了呀
    sadfQED2
        4
    sadfQED2  
       2020-08-09 09:26:53 +08:00 via Android
    @sadfQED2 打错字了,

    使用 go mod 后就没用了啊
    morize
        5
    morize  
    OP
       2020-08-09 22:41:51 +08:00
    感谢楼上三位的回复,晚上继续研究了一下 Go Module,确实如楼上几位所说。但上手觉得有点不友好,引用本地的 package 还得先 require 再 replace 成本地路径,无疑增加了学习成本。如果用 GOPATH 的模式,又得跳出当前的项目范围去 ${GOPATH}/src 下修改,也是不方便。
    这一通折腾的感想就是刚开始学习不要碰 Go Module,徒增烦恼,老老实实把项目放在 ${GOPATH}/src 下,等有依赖管理的需求再去搞 Go Module 。
    tairan2006
        6
    tairan2006  
       2020-08-10 09:19:49 +08:00
    GOPATH 的包是装在全局的,有什么用? npm -g 有啥用,GOPATH 就有啥用啊…
    morize
        7
    morize  
    OP
       2020-08-10 15:54:21 +08:00
    @tairan2006 只用 GOPATH 就是把所有包 npm -g 安装了, 而且还没有依赖管理。相比之下 npm 的依赖管理设计和项目组织都比 Go Module 都好太多了,更不用说 GOPATH 了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   990 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 20:19 · PVG 04:19 · LAX 12:19 · JFK 15:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.