我在GoLang中使用的第三方库以前在不同的情况下都有导入路径。最初一封信是小写,然后作者将其改为大写。
一些插件作者更新了他们的库,其他人则没有。与此同时,原始图书馆作者还原了案例变更。
现在我发现自己处于一种状态,由于案例导入冲突,我的应用程序无法构建。
怎样才能解决这个问题?
非常感谢
答案 0 :(得分:5)
您可以提供依赖项,然后进入vendor/
目录并手动更改(尝试grep
或{{1}依赖),依赖。
有关vendoring的介绍,请尝试https://blog.gopheracademy.com/advent-2015/vendor-folder/
原始回购邮件仍然可以存在于您的sed
中,但已经更正了#39; version可以进入vendor文件夹,在链接依赖项时编译器将首先看 。
有许多销售工具,我使用govendor
修改强>
正如mkopriva在评论中提到的那样,您可以使用gofmt
工具重构导入名称:
GOPATH
gofmt -w -r '"path/to/PackageName" -> "path/to/packagename"' ./
小写单字符标识符是通配符。
来自文档
使用-r标志指定的重写规则必须是以下形式的字符串:
gofmt -w -r 'PackageName.x -> packagename.x' ./
模式和替换都必须是有效的Go表达式。在模式中,单字符小写标识符用作匹配任意子表达式的通配符;这些表达式将替换替换中的相同标识符。
答案 1 :(得分:0)
如果有人想知道为什么您的项目中可能会发生此错误:请确保所有导入都使用小写或大写路径,但不能混合使用。 像这样:
one.go -> "github.com/name/app/login"
another.go -> "github.com/name/app/login"
而不是这样:
one.go -> "github.com/name/app/Login"
another.go -> "github.com/name/app/login"