1、问题的产生:

        在github上fork一个开源项目之后,想要修改部分代码后供公司项目使用。发现需要修改源项目中的所有内部import,例如开源模块 M中存在P1、P2等package, 其中P2 import P1的import路径为 “github.com/someone/M/P1”,而我fork的分支里则是需要import 自己修改后的 "github.com/myself/M/P1",与此类似,整个开源项目里很多这种地方都需要修改。

所以引出了对相对路径导入的思考,有没有什么办法支持相对路径的导入而方便fork之后的差异开发呢?

2、对问题的探索与思考:

经过网上资源查找,发现早期的GO是支持相对路径引用的,例如上面的例子, P2中是可以直接 import "./P1”的,但是之后又取消了, 这里有关于这个问题类似的提问和探讨,需要翻墙

3、结论及解决办法:

既然相对路径导入的方式已经被官方移除了,肯定是有他的原因(总体来说是利大于弊的),那么就是如何适应它了。

参考提问中的回答,如下图:

解决办法中第一条看了半天硬是没看懂,介于它是针对小改动的,就不管他了。哪位读者看到这里如果明白他上面的意思,希望不吝赐教,谢谢了。

第二条针对大修改的,还是逃不脱 修改所有导入路径 的这个办法。。至于修改的具体方式就看个人喜好了。

批量修改好像还有一个便捷方式,就是在mod文件中使用replace,不过对replace还不熟悉,是否会引发出其他问题还不好说。

相关链接: