加入收藏 | 设为首页 | 会员中心 | 我要投稿 葫芦岛站长网 (https://www.0429zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 动态 > 正文

项目中代码组织的两种模式

发布时间:2021-03-31 14:01:16 所属栏目:动态 来源:互联网
导读:PATH mode(gopath模式): 通过配置 GO111MODULE=off 强制开启 $GOPATH默认为用户家目录下的go目录, 即 ~/go $GOPATH可以设置多个目录, 可以实现依赖包存放在一个目录, 自己项目的包存放在另外一个目录 包需要存放在$GOPATH/src下的子目录中, 包目录相对于$GOP



  • PATH mode(gopath模式): 通过配置 GO111MODULE=off 强制开启
  1. $GOPATH默认为用户家目录下的go目录, 即 ~/go
  2. $GOPATH可以设置多个目录, 可以实现依赖包存放在一个目录, 自己项目的包存放在另外一个目录
  3. 包需要存放在$GOPATH/src下的子目录中, 包目录相对于$GOPATH/src的相对路径则为包的导入路径
  4. 习惯上, 包所在的目录名与包名相同(不是必须)
  5. 使用go get下载的包也是存放在$GOPATH/src目录中
  6. 依赖包可以放在vendor目录中
  7. 没有模块相关的概念
  • module mode(gomod模式): 通过配置GO111MODULE=on强制开启
  1. $GOPATH默认为用户家目录下的go目录, 即 ~/go
  2. 模块目录可以是任何目录, 包必须在某个模块中
  3. 模块路径需要在模块目录下的 go.mod 文件中使用module指令指定
  4. 习惯上, 模块下的包所在的目录名与包名相同(不是必须)
  5. 使用go get下载的包存放在$GOPATH/pkg/mod下的相关目录中
  6. 通过 go 命令的参数-mod=vendor可以支持 main 包下的vendor目录
  7. 有模块相关的概念及配置, 比如: GOPROXY, GOPRIVATE, GOSUMDB等

注: GO111MODULE配置还有一个值是auto, 意思是具体 go 使用哪一种模式由 go 来判断并决定, 不同版本的判断不同, 效果不同, 所有建议使用 go 之前先明确设置GO111MODULE的值为 off 或者 on

注: gomod 模式中只保留了部分的 vendor 特性支持, 不建议日常开发中使用, 一般用作依赖存档或 CI/CD 使用

注: gopath 模式基本废弃, 不建议再使用, 如果有老项目仍在使用, 建议着手迁移到 gomod 模式, 如果迁移有问题, 可以在社区交流讨论, 或向官方求助

03 两种模式的使用示例

gopath 模式(官方已经准备废弃,不建议使用)

(编辑:葫芦岛站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!