gpt4 book ai didi

dependencies - 使用标签获取 Go 包依赖

转载 作者:IT王子 更新时间:2023-10-29 02:18:10 31 4
gpt4 key购买 nike

如何使用特定导入的版本标签一次获取 Go 包的所有依赖项?

假设我有一个包含多个包的 go 树:

src/
foo/
bar/ (go code in package bar)
x.go
quux/ (go code in package main)
y.go

现在让包 `bar' 依赖于使用标签版本的第三方库
(即通常获取:go get -tags mylib_2.0 github.com/user/mylib)

我想做的是在导入行指定一个标签以便我的树上的 go get ./... 获得正确的版本方案。像这样的东西:

import "github.com/user/mylib" `tags=mylib_2.0`

最佳答案

也改变你的项目结构:

src/
foo/
bar/
v1/ (go code in package bar)
x.go
v2/
x.go
quux/
v1/ (go code in package main)
y.go

这是处理不同版本库的唯一可能方法。

这样你也解决了 jnml 描述的问题,现在每个库都有自己的依赖项和对其他库的版本。

因评论而更新:

根据此处描述的工作区文档:
http://golang.org/doc/code.html#Workspaces

你的结构看起来像

src/
foo/
bar/
v1/ (go code in package bar)
x.go
v2/
x.go
quux/
v1/ (go code in package main)
y.go
meier/
v1/ (go code in package main)
w.go
v2/ (go code in package main)
w.go

现在在您的 bar lib (x.go) 中,您需要来自 lib *quux (y.go) 的函数
要导入这个你会写:

import "foo/quux/v1/"

请注意,您还可以在结构中的包之前执行版本,因此您的结构可能看起来像/foo/v1/quux,而不是 foo/quux/v1,那么您不需要名称进口。

现在 lib quux 在版本 1 中使用 lib meier
所以导入将是:

import "foo/meier/v1"

关于jnml,现在你的 lib bar 还需要 lib meier 但在版本 2
所以导入看起来像:

import "foo/meier/v2"

现在当你调用:bar -> quux -> meier
你会看到你不能将 bar 中的返回值分配/传递给 meier

因为:meier/v1 != meier/v2

这将在编译期间失败。

如果您需要使用来自 meier v1quux 结果,您还需要在 中导入 meier/v1>酒吧

关于dependencies - 使用标签获取 Go 包依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17275056/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com