我怎么能告诉goimports更喜欢一个包呢?

时间:2016-12-06 12:03:37

标签: go

此档案:

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套餐吗?

2 个答案:

答案 0 :(得分:3)

使用.goimportsignore在你的情况下是行不通的,因为要忽略的包在标准库中而不在GOPATH下。

-local标记也不起作用,因为两个包都具有相同的名称,因此errors仍然会选择pkg/errors

您可以选择使用golang.org/x/tools/imports

编写自己的goimports版本

或另一个不方便的方法是确保您第一次在新文件中调用error.Wrap或其中一个其他功能,而不是errors.New,以便goimports可以识别{{} 1}}。

答案 1 :(得分:1)

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

  

排除$ GOPATH中的目录被扫描为Go   文件,goimports尊重配置文件   $ GOPATH / src / .goimportsignore,可能包含空行,注释   行(以'#'开头),或命名相对于的目录的行   扫描时要忽略的配置文件。没有通配或正则表达式   允许模式。使用“-v”详细标志来验证它是否正常工作   看看goimports在做什么。

所以你可以尝试排除错误目录。

相关问题