go原生的format格式化都是tab,且使8个字符宽度,但是由于我们团队都是由PHP技术转过来的,然后很多同事都使用golang工具,可以自带设置缩进为4个空格,所以为了沿用之前的风格,都采用4个空格为缩进。
而我却比较喜欢用vscode,下载了go插件,选用的go.formatTool工具为“goimports”,自动化格式化所有空格都会自动转换为tab。网上查询了很多文章,都是修改goimports.go的源文件然后进行重新编译,修改配置为:
options = &imports.Options{ TabWidth: 4, TabIndent: false, Comments: true, Fragment: true, } 然而编译后并不生效,自动格式化代码仍然还是tab,很无奈-_-,为啥就没有一个真正解决问题的。 其实goimports只是对import的代码进行格式修改,最终对整个代码进行tab替换的使go原生的goformat,这里介绍下修改方法: 1. 修改go的原生的goformat源文件,通过命令“ go env GOROOT”查找系统默认的goroot目录,我的是:/usr/local/Cellar/go/1.11/libexec/ 进入src的go format目录。/usr/local/Cellar/go/1.11/libexec/src/go/format修改format.go文件,如下: var config = printer.Config{Mode: printer.UseSpaces /*| printer.TabIndent*/, Tabwidth: 4} 注释掉printer.TabIndent,修改Tabwidth为4 2. 重新安装goImports,命令如下: go install golang.org/x/tools/cmd/goimports 至此vscode自动保存调用goformat的自动化格式代码,就会是4个空格了。 总结: 没有解决不了的问题,只要下决心去研究始终能解决的,然后顺便吐槽下互联网很多东西都是复制黏贴,真正写东西的人太少了。 Be the First to comment.