此档案:
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
套餐吗?
答案 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在做什么。
所以你可以尝试排除错误目录。