此文件:
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包吗?
发布于 2016-12-06 20:40:30
在您的例子中,使用.goimportsignore是行不通的,因为您要忽略的包在标准库中,而不在GOPATH下。
-local标志也不起作用,因为这两个包具有相同的名称,因此仍然会选择errors而不是pkg/errors。
您可以选择使用golang.org/x/tools/imports编写您自己的goimports版本
或者,另一种不方便的方法是确保在新文件中第一次调用error.Wrap或其他函数之一,而不是调用errors.New,这样goimports就可以识别pkg/errors。
发布于 2016-12-06 20:26:42
我还没有尝试过,但根据文档,网址为:https://github.com/golang/tools/blob/master/cmd/goimports/doc.go
要排除$GOPATH中的目录,使其不被扫描Go文件,goimports将遵守位于$GOPATH/src/.goimportsignore的配置文件,该配置文件可能包含空行、注释行(以‘#’开头)或指定与配置文件相关的目录的行,以便在扫描时忽略。不允许使用globbing或regex模式。使用"-v“详细标志来验证它是否正常工作,并查看goimports正在做什么。
因此,您可以尝试排除错误目录。
https://stackoverflow.com/questions/40994957
复制相似问题