为了账号安全,请及时绑定邮箱和手机立即绑定

如何在不破坏客户端代码的情况下拆分大包?

如何在不破坏客户端代码的情况下拆分大包?

Go
喵喔喔 2021-12-27 17:59:32
假设我有一个名为foobar的库包。随着时间的推移,它变得又大又重。幸运的是,它是可分离的,我设法将其功能拆分为两个独立的包foo和bar —— 大多数客户只需要使用其中一个。由于我的库已经被许多客户端使用,为了兼容性,我仍然希望维护一个foobar包作为foo和bar 中当前功能的代理。如何在 Go 中实现这一目标?想到的一种方法是在foobar 中为foo和bar 中的每个结构/函数创建别名。所以如果foo定义F()和bar定义B(),我会在foobar:var (  F = foo.F  B = bar.B)但我希望有一种更简单/更清洁的方式。
查看完整描述

1 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

创建别名包是唯一的方法。但您的尝试可能不会奏效:它仅适用于函数、变量和常量,而不适用于类型。对于类型,您必须复制 foobar 中的类型。

我不会这样做。只需在版本 1 中使用 foobar 并使用 foo 和 bar 重新开始(可能直接在版本 2 中)。


查看完整回答
反对 回复 2021-12-27
  • 1 回答
  • 0 关注
  • 152 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号