Go语言go fmt命令的用法(新手必看)
Go 语言的开发团队制定了统一的官方代码风格,并且推出 go fmt 命令帮助开发者格式化代码,使之呈现统一的风格。
go fmt 命令优先读取标准输入:
go fmt 命令默认不执行简化代码操作,而是使用 -s 参数开启简化代码功能,具体如下:
1) 去除数组、切片、Map初始化时不必要的类型声明。如下格式的切片表达式:
2) 去除数组切片操作时不必要的索引指定。如下格式的切片表达式:
3) 去除循环时非必要的变量赋值。如下格式的循环结构:
如下格式的循环结构:
go fmt 命令还有一些附加参数如下表所示:
go fmt 命令优先读取标准输入:
- 如果传入的是文件路径,则格式化这个文件;
- 如果传入的是一个目录,则格式化这个目录中所有 .go 文件;
- 如果不传参数,则格式化当前目录下的所有 .go 文件。
go fmt 命令默认不执行简化代码操作,而是使用 -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 {...}
go fmt 命令还有一些附加参数如下表所示:
附加参数 | 说明 |
---|---|
-1 | 仅把那些不符合格式化规范的、需要被命令程序改写的源码文件的绝对路径打印到标准输出,不把改写后的内容打印到标准输出 |
-W | 把改写后的内容直接写入文件,不作为结果打印到标准输出 |
-r | 添加形如“a[b:len(a)]->a[b:]”的重写规则。如果需要自定义额外的格式化规则,就要使用该参数 |
-S | 简化文件中的代码 |
-d | 只把改写前后内容的对比信息作为结果打印到标准输出,不把改写后的内容打印到标准输出。命令程序使用 diff 命令比对内容。在 Windows 操作系统下可能没有 diff 命令,需要另行安装 |
-e | 打印所有的语法错误到标准输出。如果不使用此标记,则只打印每行的第 1 个错误,且只打印前 10 个错误 |
-comments | 是否保留源码文件中的注释。在默认情况下,此标记被隐式使用,并且值为 true |
-tabwidth | 此标记用于设置代码中缩进使用的空格数量,默认值为 8。要使此标记生效,需要使用 “-tabs” 标记,并把值设置为 false |
-tabs | 是否使用 tab('\t')代替空格表示缩进。在默认情况下,此标记被隐式使用,并且值为 true |
-cpuprofile | 是否开启 CPU 使用情况记录,并将记录内容保存在此标记值所指的文件中 |