当前位置: 首页 > news >正文

golang包管理工具中 GOPATH 与 Go Modules 的区别总结

GOPATH 与 Go Modules 的区别总结

特性GOPATHGo Modules
项目位置必须在 $GOPATH/src
目录下
项目可以位于任何目录,完全不依赖于 GOPATH。
依赖管理方式通过 go get
下载到 **$GOPATH/src**
,无法管理版本
通过 **go.mod**
文件管理依赖和版本。
版本管理无法处理多个版本,所有项目共用一个版本支持为每个项目指定不同版本的依赖。
依赖安装目录下载的包直接放在 **$GOPATH/src**下载的包会缓存到 **$GOPATH/pkg/mod**
,并且不同项目共享缓存。
灵活性固定的目录结构,不易管理支持灵活的项目结构,可以任意放置项目代码。
适合的场景小型项目或单个开发者使用大型项目、团队协作,支持多版本管理和模块化开发。

解释一下:

- **项目位置*** **GOPATH模式下,不同项目需要指定不同的GOPATH,然后每个项目都要位于**`**$GOPATH/src**`**目录里面,不然没办法读取到这些包。如果不同项目共用同一个GOPATH,那么所有项目都得放到**`**$GOPATH/src**`**,会很不方便*** **Go Modules相当于maven,会将所有依赖放到**`**$GOPATH/pkg/mod**`**中,项目的路径可以随便,没有任何要求**
- **依赖管理方式*** **GOPATH模式下,go get不能指定版本号,每次都是默认从远程仓库下载最新的版本,这样会导致项目不同成员下载到不同的版本依赖*** **Go Modules下 go get可以指定版本号**
- **版本管理*** **OPATH模式下,如果一个包被下载多个版本,那么新的版本会覆盖掉旧的版本,所有项目共用一个版本*** **Go Modules下可以允许依赖存在多个版本**
http://www.dtcms.com/a/325922.html

相关文章:

  • JSON Schema
  • LabVIEW模糊逻辑控制车辆停靠
  • 在docker上部署fastapi的相关操作
  • day072-代码检查工具-Sonar与maven私服-Nexus
  • 深度学习-卷积神经网络-VGG
  • Maven 报错:Blocked mirror for repositories【完美解决】
  • 文旅元宇宙:科技重塑数字消费新文明
  • Azimutt:一款免费开源的多功能数据库工具
  • USB 设备百科
  • 解决:Error updating changes: detected dubious ownership in repository at
  • 爬虫和数据分析相结合的案例
  • Nami Cloud 提供高性能云服务,加速 Walrus 的应用普及
  • K8s集群+Rancher Server:部署DolphinScheduler 3.2.2集群
  • etf期权剩余0天还能交易吗?
  • Facebook广告投放进阶:ABO精测与CBO放量的协同增长策略
  • Android13 Framework隐藏某些App
  • 【深度学习基础】贝叶斯理论
  • Next.js API 路由:构建后端端点
  • 数据结构3线性表——单链表(C)
  • Flutter - 应用启动/路由管理
  • 13、Docker Compose 安装 Redis 哨兵集群(一主两从)
  • 容器技术之docker
  • Excel 连接阿里云 RDS MySQL
  • AAAI-2025 | 北理工具身导航新范式!FloNa:基于平面图引导的具身视觉导航
  • Dashboard.vue 组件分析
  • CLIP在文生图模型中的应用
  • 《范仲淹传》读书笔记与摘要
  • sqli-labs通关笔记-第42关 POST字符型堆叠注入(单引号闭合 手工注入+脚本注入两种方法)
  • pdf转word教程
  • ERA5---MATLAB处理水汽数据与臭氧数据的读取与重采样-重复性工作