-s参数可以开启简化代码功能,具体来说会进行如下的转换:[]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 命令参数如下表所示:| 标记名称 | 标记描述 |
|---|---|
| -l | 仅把那些不符合格式化规范的、需要被命令程序改写的源码文件的绝对路径打印到标准输出。而不是把改写后的全部内容都打印到标准输出。 |
| -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 使用情况记录,并将记录内容保存在此标记值所指的文件中。 |
-r参数,按照 pattern -> replacement 的格式传入规则。
package main
import "fmt"
func main() {
a := 1
b := 2
c := a + b
fmt.Println(c)
}
用以下规则来格式化上面的代码。gofmt -w -r "a + b -> b + a" main.go
格式化的结果如下。
package main
import "fmt"
func main() {
a := 1
b := 2
c := b + a
fmt.Println(c)
}
注意:gofmt 使用 tab 来表示缩进,并且对行宽度无限制,如果手动对代码进行了换行,gofmt 不会强制把代码格式化回一行。
go fmt命令,go fmt命令是 gofmt 的简单封装。
go help fmt
usage: go fmt [-n] [-x] [packages]
Fmt runs the command 'gofmt -l -w' on the packages named
by the import paths. It prints the names of the files that are modified.
For more about gofmt, see 'go doc cmd/gofmt'.
For more about specifying packages, see 'go help packages'.
The -n flag prints commands that would be executed.
The -x flag prints commands as they are executed.
To run gofmt with specific options, run gofmt itself.
See also: go fix, go vet.
go fmt命令本身只有两个可选参数-n和-x:
-n仅打印出内部要执行的go fmt的命令;-x命令既打印出go fmt命令又执行它,如果需要更细化的配置,需要直接执行 gofmt 命令。go fmt在调用 gofmt 时添加了-l -w参数,相当于执行了gofmt -l -w。
版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有