我该如何告诉Goimports更喜欢一个软件包,而不是另一个软件包



此文件:

package foo
func errorer() error {
    return errors.New("Whoops")
}

将使用goimports

转换为此
package foo
import "errors"
func errorer() error {
    return errors.New("Whoops")
}

但是,我想在此项目中到处使用github.com/pkg/errors软件包,而不是errors软件包。

我可以告诉goimports总是喜欢github.com/pkg/errors软件包吗?

使用.goimportsignore在您的情况下无法使用,因为您要忽略的软件包在标准lib中而不是Gopath中。

-local标志也无法使用,因为两个软件包都具有相同的名称,因此errors仍将通过pkg/errors选择。

您的选项是使用golang.org/x/tools/imports

编写您自己的goimports版本

或另一种不便的方法是确保您在新文件中首次致电error.Wrap或其他功能之一,而不是errors.New,以便goimports可以识别pkg/errors

我没有尝试过,但是根据文档:https://github.com/golang/tools/blob/master/cmd/goimports/doc.go

在您的$ gopath中排除目录之外的目录 文件,Goimports尊重一个配置文件 $ gopath/src/.gaimportsignore可能包含空白行,评论 行(以'#'开头)或将目录命名为 扫描时要忽略的配置文件。没有球形或言论 允许模式。使用" -v"详细标志来验证其工作 看看Goimports在做什么。

因此,您可以尝试排除错误目录。

相关内容

最新更新