编辑多个未发布的 Go 模块的本地副本

2023-12-08

是只有我一个人还是使用未发布的 go 模块非常痛苦?

https://go.dev/doc/modules/managing-dependency#tmp_9

https://groups.google.com/g/golang-nuts/c/9MfGXLmRu8w/m/D2gm_viYBAAJ

从这两个链接中,我找到了替换指令。但现在这就是我遇到困难的地方。

假设我有包 example.com/p1、example.com/p2 和 example.com/p3。 p1 使用 p2,p2 使用 p3。

我添加了替换指令:

  • p2 的 go.mod 中 p3 的路径
  • p1 的 go.mod 中 p2 的路径

但现在看来我还需要在 p1 的 go.mod 中为 p3 添加一个替换指令。 由于我拥有大量未发布的软件包,这变得非常痛苦。

这是预期的还是我做错了什么?


正如其他人所说,将所有内容放在一个未发布的模块中比将内容分解为多个模块要容易得多。这使得保持“幸福之路”变得更加容易,并且对于您的情况来说,这听起来像是可行的。

也就是说,如果您升级到 Go 1.18,新的工作区该功能使得同时编辑多个本地模块变得更加容易:

通过多模块工作区,您可以告诉 Go 命令您同时在多个模块中编写代码,并轻松在这些模块中构建和运行代码。

例如,从包含多个模块目录(每个都有自己的 go.mod 文件)的父目录中,您可以创建一个go.work文件并通过执行以下操作递归添加下面的模块:

$ go work init
$ go work use -r .

例如,如果您有两个模块,假设模块foo导入模块bar,生成的 go.work 文件可能如下所示:

$ cat go.work
go 1.18

use (
        ./foo
        ./bar
)

如果您然后 cd 到foo目录,命令如go build将使用两者的本地副本foo and bar.

其机制是go命令检查它是否位于带有go.work文件,默认情况下它会查阅任何go.work找到有助于解决依赖项所在位置的文件。

有关工作区的更多信息,这里有一个很好的教程:https://go.dev/doc/tutorial/workspaces

或者,您可以使用旧的技术添加replace指令到您个人的 go.mod 文件,但这并不像新的那么好go.work特征。

最后,即使考虑到新的go.work功能,值得重申的是,如果您一次只使用一个模块,您的生活会更简单,因此不要不必要地分割可能是单个模块的内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编辑多个未发布的 Go 模块的本地副本 的相关文章

  • 在 Golang Server 中接受持久的 tcp 连接

    我正在尝试使用 Go 并且想创建一个 TCP 服务器 我可以通过 telnet 访问该服务器 发送命令并接收响应 const CONN HOST localhost CONN PORT 3333 CONN TYPE tcp func mai
  • 如何更新任意go结构的所有字符串字段?

    我尝试编写一个函数来更新所有字符串字段随意的结构体 像这样 type Student struct Name string Age int func SetStringField obj interface reflect ValueOf
  • 从头开始使用映像部署无法启动

    我正在使用以下内容构建图像Dockerfile FROM golang 1 19 2 bullseye as builder COPY src src WORKDIR src RUN CGO ENABLED 1 go build race
  • 空或不需要的结构字段

    我有两个结构体 代表将插入到 mongodb 数据库中的模型 一个结构 投资 将另一个结构 集团 作为其字段之一 type Group struct Base Name string json name bson name type Inv
  • 在 Go 中获取机器 epsilon 的最简单方法

    在 Go 中获取机器 epsilon 的最简单方法是什么 浮点数的其他方面 例如精度 最小指数 最大指数 摆动等 又如何呢 我意识到有一个 math const 包 其中包含不同浮点类型的最大值和最小值 http golang org sr
  • 地图中的最大元素数

    GO 中的 Map 最多可以存储多少个元素 如果我需要经常从 Map 访问数据 那么在长时间运行的程序中不断向 Map 添加项目并从中检索项目是一个好主意吗 除了map length类型的最大值之外 map中的元素数量没有理论上的限制 in
  • 如果覆盖率低于一定百分比,则单元测试失败

    我制作了一个执行的 makefilego test cover 是否有可能失败make unit tests如果覆盖范围低于 X 则命令 我该怎么做呢 您可以使用TestMain在你的测试中做到这一点 TestMain 可以充当测试的自定义
  • 将绝对路径和相对路径组合起来得到新的绝对路径

    我正在编写一个程序 其中一个组件必须能够采用给定的路径 例如 help index html or help 和基于该位置的相对路径 例如 otherpage index html or sub dir of help or help2 h
  • 具有多个等待组的管道中通道范围内的死锁

    我正在练习通过同时将计算分为 100 组来计算阶乘的挑战 我解决了 WaitGroups 上的很多问题 但仍然处于calculateFactorial函数我在通道部分的范围上陷入了僵局 希望有人能指出这个问题 谢谢 package main
  • 如何使用json传递opentracing数据

    我的 API 网关启动一个跟踪器和一个用于验证电子邮件的范围 然后它传递给user service用于验证 我想通过这个span详情至user service作为 json 对象并启动另一个span as a tracer start sp
  • 如何使用 mongo-go-driver 有效地将 bson 转换为 json?

    我想将 bson 转换为mongo go 驱动程序 https github com mongodb mongo go driver有效地转换为 json 我应该小心处理NaN 因为json Marshal失败如果NaN存在于数据中 例如
  • 使用cgo时的多重定义

    package main int add int a int b return a b import C import fmt func main func Test1 fmt Println C add 1 3 export Test2
  • 如何使用 Java 原生接口从 Java 调用 Go 函数?

    可以通过以下方式调用 C 方法JNA https en wikipedia org wiki Java Native AccessJava 中的接口 如何使用 Go 实现相同的功能 package main import fmt impor
  • 我想在后端验证来自 golang 前端的时区

    前端在注册期间发送时区以及其他用户详细信息 我需要在时区上放置一个验证器来进行 api 测试 时区数据的格式为 GMT 10 00 Hawaii GMT 08 00 Pacific Time US amp Canada 我所做的是定义数组中
  • Go中如何自定义http.Client或http.Transport超时重试?

    我想实现一个自定义http Transport对于标准http Client 如果客户端超时 它将自动重试 附 由于某种原因 习俗http Transport is a 一定有 我已经查过了hashcorp go retryablehttp
  • 是否可以获取有关 Golang 中调用者函数的信息?

    是否可以获取有关 Golang 中调用者函数的信息 例如 如果我有 func foo Do something func main foo 我怎样才能得到那个foo已被呼叫来自main 我可以用其他语言实现这一点 例如在 C 中我只需要使用
  • 如何在运行“go test”时排除或跳过特定目录[重复]

    这个问题在这里已经有答案了 go test go list grep v vendor coverprofile testCoverage txt 我正在使用上述命令来测试文件 但有 1 个名为 Store 的文件夹我想从测试中排除 怎样才
  • GOPATH值设置

    我用go1 3 1 windows amd64 msi安装go 安装后GOROOT是默认设置 我发现 D Programs Go bin 在 PATH 中 然后我创建一个 GOPATH 环境变量 使用 go get 命令时 出现错误 软件包
  • 有没有办法在 VSCode 中保存时运行 go 测试,并将其输出到终端?

    现在我有几个项目在VSCode中运行 运行起来相当繁琐go test每次我编写新代码时 我宁愿立即看看我是否破坏了某些东西 我知道在 Javascript 中我可以在每次保存文件时运行测试 并将输出发送到终端 现在我正在使用 保存时运行 h
  • 展平嵌套结构会导致切片的切片

    所以我有一个像这样的结构 type Bus struct Number string Name string DirectStations Station Station is another struct ReverseStations

随机推荐

  • 如何拒绝/关闭特定来电号码

    在我的应用程序中 我想阻止特定的传入号码 我进行谷歌搜索 然后执行以下操作阻止来电 Android 但这段代码对我不起作用 我正在测试安卓2 3 5 我这里没有活动课 gt gt 第一类是扩展BroadcastReceiver 清单文件
  • 如何知道应用程序在android中运行了多长时间?

    我正在android中做一个应用程序 它需要知道应用程序运行了多长时间 有谁知道如何检索此类信息 android 有什么方法可以提供有关正在运行的应用程序的信息 从它们运行的 时间来看 我不知道有什么方法可以处理这个问题 但你可以简单地自己
  • 如何强制 xslt 转换将数据加载到 cdata 部分?

    我有一个客户要求我提供给他们的 xml 中的所有文本都位于 CDATA 部分中 我知道文本不需要在 CDATA 中 因为它在提供给客户端时已经被解析和转换 然而 无论我多么确定 他们仍然需要 CDATA 部分 叹 我正在使用 Saxon 9
  • 如何检测 facebook 的 FB.init 何时完成

    旧的 JS SDK 有一个名为 FB ensureInit 的函数 新的SDK似乎没有这样的功能 我如何确保在完全启动之前我不会进行api调用 我把它放在每页的顶部 div div
  • 将 Objective-C typedef 转换为其等效字符串

    假设我在 h 文件中声明了一个 typedef 如下所示 typedef enum JSON XML Atom RSS FormatType 我想构建一个将 typedef 的数值转换为字符串的函数 例如 如果消息 self toStrin
  • Android - 如何获取应用程序名称? (不是包名)

    在我的清单中我有
  • 使用 System.AccessToken 创建服务端点

    目前 我们使用特定的用户名和 PAT 来进行 Azure DevOps REST API 调用 但从维护和脆弱性的角度来看 这不是一个好的解决方案 我们想改用 OAuth 令牌 我们遇到问题的一种情况是尝试从管道生成服务端点 我可以使用以下
  • 使用c#获取系统信息[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 如何获取计算机的系统信息 系统制造商 系统型号 Bios版本 您可以使用以下方式获取制造商名称 添加引用System Management System Management S
  • java dom getTextContent() 问题

    当我尝试访问我的 xml 数据时doGet我的 servlet 的方法 它只输出直到空白的值 包括整个值 XML 文件
  • 在 AWS iOS SDK 中,如何处理 FORCE_CHANGE_PASSWORD 用户状态

    我已经按照这里的示例进行了操作 https github com awslabs aws sdk ios samples tree master CognitoYourUserPools Sample 将交互式认知登录集成到我的 iOS 应
  • 如何识别图片中的钞票?

    我有一些欧元钞票的图片 账单完全在图像内 并且大多是平坦的 例如变形很小 并且透视倾斜很小 例如完全从钞票上方拍摄的图像 现在我不是图像识别方面的专家 我想实现以下目标 找到钞票的边界框 这样我就可以从图像其余部分的噪声中 剪掉 钞票 弄清
  • Java Graphics2D浮点精确drawOval替代品?

    因此 我尝试绘制一个圆弧并在其圆形端点周围放置一个圆 但由于舍入到最近的像素 我遇到了问题 这在某些情况下是可见的 但并非在所有情况下都是可见的 有没有办法使用浮点和抗锯齿来绘制圆来消除这种舍入误差 您可以运行此代码来查看问题 为了清晰起见
  • max深度和min深度如何与find命令一起使用?

    我想知道最大深度和最小深度如何与 find 命令一起使用 还想知道下面的命令是如何工作的 find mindepth 2 maxdepth 5 name file1 根据find 的手册页 maxdepth levels Descend a
  • 比较 Timer 与 DispatcherTimer

    有什么区别between System Windows Forms Timer and System Windows Threading DispatcherTimer 在什么情况下我们应该使用它们 有什么最佳实践吗 Windows For
  • 使用 h5py 打乱 HDF5 数据集

    我有一个很大的 HDF5 文件 30GB 我需要对每个数据集中的条目 沿着 0 轴 进行洗牌 浏览 h5py 文档我也找不到randomAccess or shuffle功能 但我希望我错过了一些东西 有谁足够熟悉 HDF5 来想出一种快速
  • 请求权限对话框暂停我的活动

    我在里面请求许可onActivityResult我的活动的情况 发生的情况是我的活动在显示请求权限对话框时被暂停 这是为什么 我能以某种方式阻止它吗 我所做的只是以正常方式请求许可 if Build VERSION SDK INT gt B
  • EF Core 3.1.14 重复冷启动

    我们已将一个非常简单的 NET CORE 3 Web API 应用程序部署到 Azure 云 该应用程序是一个 Web API 并与 Azure 中托管的一个非常简单的 SQL 服务器数据库进行通信 我们注意到两个主要的性能问题 所有 AP
  • 替换R中矩阵中的非对角元素(希望这次问得更好)[重复]

    这个问题在这里已经有答案了 好吧 我早些时候问过这个问题 但我因为没有指定任何内容并且没有显示出之前尝试的迹象而受到了 理应的 批评 所以让我再试一次 I m using R and I have a 463 463 matrix What
  • 处理来自多个选择字段的数据

    我有一个多重选择字段 设计如下
  • 编辑多个未发布的 Go 模块的本地副本

    是只有我一个人还是使用未发布的 go 模块非常痛苦 https go dev doc modules managing dependency tmp 9 https groups google com g golang nuts c 9Mf