Move包迁移至新位置后,如何保留旧路径的导出?
可以保留旧导入路径,具体这么做就行
在旧路径x/y下创建一个转发文件(比如叫forward.go),把新包x/abc/y的所有公开内容原样导出,依赖旧路径的项目就能无缝继续使用。
举个例子,转发文件的内容大概是这样:
// Deprecated: 请迁移到 x/abc/y 包 package y import newY "x/abc/y" // 转发变量 var ( Config = newY.Config DefaultLogger = newY.DefaultLogger ) // 转发类型(用类型别名) type ( User = newY.User Handler = newY.Handler ) // 转发函数 func Init() { newY.Init() } func Process(data string) error { return newY.Process(data) }
注意事项
- 旧路径下的包名必须和原来保持一致(这里是
y),不然依赖项目会报编译错误。 - 后续新包如果新增了公开标识符,记得同步更新这个转发文件,不然用旧路径的项目没法用到新功能。
- 加上
Deprecated注释能提醒依赖方尽快切换到新路径,避免后续维护麻烦。
内容的提问来源于stack exchange,提问作者karjan
相关产品推荐
相关产品推荐

