gpt4 book ai didi

go - 在同一个文件中处理不同版本的包

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

我们的数据库有两个不同版本的包。我们有些项目还在用旧的db,而新的项目用的是新的db

我们有一个包裹 conn

import(
"gopkg.in/db/pkg.v3"
)

...
func connect() {
y := dbpkg.New()
...
}

现在我们有 gopkg.in/db/pkg.v4两个pkg.v3pkg.v4公开非常相似的功能,当然,除了数据库版本之间的变化。我们的conn然而,包装使用的是两者之间通常可用的标准零件 v3v4 .因此,我们想维护包 conn按原样并在编译时确定我们是否必须包含 pkg.v3pkg.v4 .这可能吗?

如果没有,那么另一个想法是创建一个新的本地包 pkg (conn 应使用)并有两个文件 pkg_v3.gopkg_v4.gopkg可以根据构建标签进行编译。同样,如何从 pkg.v3 or pkg.v4 中自动公开部分/所有功能通过pkg .

我们希望避免复制整个 conn包只是为了改变这一行 pkg.v3pkg.v4

最佳答案

我不会为此使用构建标签,您需要在同一个函数中调用不同的版本吗?

您仍然可以加载多个包并使用不同的别名(例如 this package 可能实现的别名)。

import(
pkgVersionA "gopkg.in/db/pkg.v1"
pkgVersionB "gopkg.in/db/pkg.v2"
)

...
func connect() {
y := pkgVersionA.New()
x := pkgVersionB.New()
...
}

关于go - 在同一个文件中处理不同版本的包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50588677/

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