我们的数据库有两个不同的版本包。我们的一些项目仍然使用旧的数据库,而新的数据库使用新的数据库
我们有一个包conn
import(
"gopkg.in/db/pkg.v3"
)
...
func connect() {
y := dbpkg.New()
...
}
现在我们已经gopkg.in/db/pkg.v4
进来了。pkg.v3
和pkg.v4
都暴露了非常相似的功能,当然,除了db版本之间的变化。我们的conn
包使用的是v3
和v4
之间通常可用的标准部分。因此,我们希望按原样维护包conn
,并在编译时确定是否必须包含pkg.v3
或pkg.v4
。这可能吗?
如果没有,那么另一个思考过程是创建一个新的本地包pkg
(conn
将使用)并在{{pkg_v3.go
和pkg_v4.go
中有两个文件1}}可以根据构建标记进行编译。在这方面,如何自动从pkg
到pkg.v3 or pkg.v4
公开部分/全部功能。
我们希望避免重复整个pkg
包只是为了改变这一行conn
或pkg.v3
答案 0 :(得分:1)
我不会为此使用构建标记,你需要在同一个函数中调用不同的版本吗?
您仍然可以加载多个包并使用不同的别名(例如,this package可能会出现这种情况)。
import(
pkgVersionA "gopkg.in/db/pkg.v1"
pkgVersionB "gopkg.in/db/pkg.v2"
)
...
func connect() {
y := pkgVersionA.New()
x := pkgVersionB.New()
...
}