使用gofmt格式化代码
对于一门编程语言来说,代码格式化是最容易引起争议的一个问题,不同的开发者可能会有不同的编码风格和习惯,但是如果所有开发者都能使用同一种格式来编写代码,开发者就可以将宝贵的时间专注在语言要解决的问题上。 gofmt 介绍 Golang 的开发团队制定了统一的官方代码风格,并且推出了 gofmt 工具(gofmt 或 go fmt)来帮助开发者格式化他们的代码到统一的风格。gofmt 是一个 cli 程序,会优先读取标准输入,如果传入了文件路径的话,会格式化这个文件,如果传入一个目录,会格式化目录中所有.go 文件,如果不传参数,会格式化当前目录下的所有.go 文件。 gofmt 默认不对代码进行简化,使用-s 参数可以开启简化代码功能,具体来说会进行如下的转换: 去除数组、切片、Map 初始化时不必要的类型声明: 如下形式的切片表达式: []T{T{}, T{}} 将被简化为: []T{{}, {}} 去除数组切片操作时不必要的索引指定 如下形式的切片表达式: s[a:len(s)] 将被简化为: s[a:] 去除迭代时非必要的变量赋值 如下形式的迭代: for x, _ = range v {...} 将被简化为: for x = range v {...} 如下形式的迭代: for _ = range v {...} 将被简化为: for range v {...} gofmt 命令参数列表如下: usage: gofmt [flags] [path ...] -cpuprofile string write cpu profile to this file -d display diffs instead of rewriting files -e report all errors (not just the first 10 on different lines) -l list files whose formatting differs from gofmt's -r string rewrite rule (e.g., 'a[b:len(a)] -> a[b:]') -s simplify code -w write result to (source) file instead of stdout 可以看到,gofmt 命令还支持自定义的重写规则,使用-r 参数,按照 pattern -> replacement 的格式传入规则。 ...