当前位置: 首页 > 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.lryc.cn/news/617730.html

相关文章:

  • 新人如何简化学习Vue3文件
  • while循环结合列表或字典
  • YOLOv6深度解析:实时目标检测的新突破
  • 企业架构工具篇之ArchiMate的HelloWorld(2)
  • Eino中的两种应用模式:“单独使用”和“在编排中使用”
  • 软考架构师:数据库的范式
  • 分治-归并-912.排序数组-力扣(LeetCode)
  • Catalyst 日志记录(Logging)
  • 石材 × 设计:解锁永恒材质的四大灵感密码
  • 获取MaixPy系列开发板机器码——MaixHub 模型下载机器码获取方法
  • ESP32 配合上位机串口打印数据
  • 【Web 服务的铁三角架构】Flask、Nginx 与 Docker 的分工与协作
  • FFmpeg - 基本 API大全(视频编解码相关的)
  • macOS 搭建 Gitea 私有 Git 服务器教程
  • wed前端第三次作业
  • 算法训练营DAY57 第十一章:图论part07
  • 缓存的三大问题分析与解决
  • STM32蓝牙模块驱动开发
  • 第10节 大模型分布式推理典型场景实战与架构设计
  • 《算法导论》第 19 章 - 斐波那契堆
  • 【SpringBoot】持久层 sql 注入问题
  • 一周学会Matplotlib3 Python 数据可视化-绘制直方图(Histogram)
  • 银河麒麟V10配置KVM的Ubuntu虚机GPU直通实战
  • 梯度裁剪总结
  • 做调度作业提交过程简单介绍一下
  • Spring Cloud Gateway 路由与过滤器实战:转发请求并添加自定义请求头(最新版本)
  • 如何安装 Git (windows/mac/linux)
  • 【数据可视化-85】海底捞门店数据分析与可视化:Python + pyecharts打造炫酷暗黑主题大屏
  • Java数据库编程之【JDBC数据库例程】【ResultSet作为表格的数据源】【七】
  • NY185NY190美光固态闪存NY193NY195