Go语言精进之路:从新手到高手的编程思想、方法和技巧(1)
上QQ阅读APP看书,第一时间看更新

6.3 使用goimports

Go编译器在编译源码时会对源码文件导入的包进行检查,对于源文件中没有使用但却导入了的包或使用了但没有导入的包,Go编译器都会报错。遗憾的是,gofmt工具无法自动增加或删除文件头部的包导入列表。为此,Go核心团队的Brad Fitzpatrick实现了goimports[2],该工具后来被移到官方仓库golang.org/x/tools/cmd/goimports下维护了。

goimports在gofmt功能的基础上增加了对包导入列表的维护功能,可根据源码的最新变动自动从导入包列表中增删包。

安装goimports的方法很简单:

$go get golang.org/x/tools/cmd/goimports

如果Go编译器发现$GOPATH/bin路径存在,就会将goimports可执行文件放到该路径下,这时只要保证该路径在$PATH中即可。可以认为goimports是在gofmt之上又封装了一层,而且goimports提供的命令行选项和参数与gofmt也十分类似:

$ ./goimports -help
usage: goimports [flags] [path ...]
    -cpuprofile string
          CPU profile output
    -d    display diffs instead of rewriting files
    -e    report all errors (not just the first 10 on different lines)
    -format-only
          if true, don't fix imports and only format. In this mode, goimports is            effectively gofmt, with the addition that imports are grouped into sections.
    -l    list files whose formatting differs from goimport's
    ...

因此,这里就不再赘述goimports的用法了。