学习积累

gofmt和goimports的缩进

       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.

Leave a Comment