如何处理区分大小写的导入冲突

时间:2017-04-25 18:59:28

标签: go

我在GoLang中使用的第三方库以前在不同的情况下都有导入路径。最初一封信是小写,然后作者将其改为大写。

一些插件作者更新了他们的库,其他人则没有。与此同时,原始图书馆作者还原了案例变更。

现在我发现自己处于一种状态,由于案例导入冲突,我的应用程序无法构建。

怎样才能解决这个问题?

非常感谢

2 个答案:

答案 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"