文章目录
GoLang之gofmt工具
注:本文基于Windos系统上Go SDK v1.8进行
1.gofmt命令介绍
Go语言的开发团队制定了统一的官方代码风格,并且推出了 gofmt 工具(gofmt 或 go fmt)来帮助开发者格式化他们的代码到统一的风格。
gofmt 是一个 cli 程序,会优先读取标准输入
1)如果传入了文件的路径的话,会格式化这个文件
2)如果传入一个目录,会格式化目录中所有 .go 文件
gofmt命令后面一定要加路径,否则命令会一直卡那里
2.gofmt 命令参数
gofmt 默认不对代码进行简化,使用-s参数可以开启简化代码功能,具体来说会进行如下的转换:
1)去除数组、切片、Map 初始化时不必要的类型声明
如下形式的切片表达式:
[]T{T{}, T{}}
简化后的代码为:
[]T{{}, {}}
2)去除数组切片操作时不必要的索引指定
如下形式的切片表达式:
s[a:len(s)]
简化后的代码为:
s[a:]
3)去除循环时非必要的变量赋值
如下形式的循环:
for x, _ = range v {…}
简化后的代码为:
for x = range v {…}
如下形式的循环:
for _ = range v {…}
简化后的代码为:
for range v {…}
3.“gofmt .”执行
try项目下有两个.go文件
执行以下命令,发现没有任何变化
gofmt .
4.“gofmt -s .”执行
try项目下有两个.go文件
执行以下命令,发现命令行输出有变化,但是文件内容没有任何变化
gofmt -s .
5.“gofmt ”执行
try项目下有两个.go文件
执行以下命令,发现卡到那里了,一直不动
gofmt -s .
6.“gofmt -w -r “a + b -> b + a” main.go”执行
try项目下有1个.go文件
执行以下命令,发现文件内容发生了变化
gofmt -w -r "a + b -> b + a" main.go