假设我有一个名为 foobar 的库包。
随着时间的推移它变得又大又重。
幸运的是,它是可分的,我设法将其功能分为两个单独的包 foo 和 bar - 大多数客户只需要使用其中一个。
由于我的库已被许多客户使用,为了兼容性,我仍然希望维护一个 foobar 包作为 foo 中当前功能的代理,的栏
如何在Go中实现这一目标?
想到的一种方法是为 foo 和 bar 中的每个结构/功能在 foobar 中创建别名。因此,如果 foo 定义F()
而 bar 定义B()
,我会在 foobar :
var (
F = foo.F
B = bar.B
)
但我希望有一种更简单/更清洁的方式。
答案 0 :(得分:6)
创建别名包是唯一的方法。 但是你的尝试可能不起作用:它只适用于函数和变量和consts,但不适用于类型。对于类型,您必须在foobar中复制类型。
我不会这样做。只需在版本1中使用foobar,然后使用foo和bar重新开始(可能直接在版本2中)。