Files
the-way-to-go_ZH_CN/eBook/03.5.md
Haigang Zhou 82026084b3 1-3章 (#845)
Co-authored-by: Joe Chen <jc@unknwon.io>
2022-05-03 11:15:14 +08:00

34 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 3.5 格式化代码
Go 开发团队不想要 Go 语言像许多其它语言那样总是在为代码风格而引发无休止的争论,浪费大量宝贵的开发时间,因此他们制作了一个工具:`go fmt` (gofmt)。这个工具可以将你的源代码格式化成符合官方统一标准的风格,属于语法风格层面上的小型重构。遵循统一的代码风格是 Go 开发中无可撼动的铁律,因此你必须在编译或提交版本管理系统之前使用 gofmt 来格式化你的代码。
尽管这种做法也存在一些争论,但使用 gofmt 后你不再需要自成一套代码风格而是和所有人使用相同的规则。这不仅增强了代码的可读性,而且在接手外部 Go 项目时,可以更快地了解其代码的含义。此外,大多数开发工具也都内置了这一功能。
Go 对于代码的缩进层级方面使用 tab 还是空格并没有强制规定,一个 tab 可以代表 4 个或 8 个空格。在实际开发中1 个 tab 应该代表 4 个空格,而在本身的例子当中,每个 tab 代表 8 个空格。至于开发工具方面,一般都是直接使用 tab 而不替换成空格。
在命令行输入 `gofmt w program.go` 会格式化该源文件的代码然后将格式化后的代码覆盖原始内容(如果不加参数 `-w` 则只会打印格式化后的结果而不重写文件);`gofmt -w *.go` 会格式化并重写所有 Go 源文件;`gofmt map1` 会格式化并重写 `map1` 目录及其子目录下的所有 Go 源文件。
`gofmt` 也可以通过在参数 `-r` 后面加入用双引号括起来的替换规则实现代码的简单重构,规则的格式:`<原始内容> -> <替换内容>`
实例:
gofmt -r '(a) -> a' w *.go
上面的代码会将源文件中没有意义的括号去掉。
gofmt -r 'a[n:len(a)] -> a[n:]' w *.go
上面的代码会将源文件中多余的 `len(a)` 去掉。( **译者注:了解切片 (slice) 之后就明白这为什么是多余的了**
gofmt r 'A.Func1(a,b) -> A.Func2(b,a)' w *.go
上面的代码会将源文件中符合条件的函数的参数调换位置。
如果想要了解有关 `gofmt` 的更多信息,请访问该页面:[http://golang.org/cmd/gofmt/](http://golang.org/cmd/gofmt/)。
## 链接
- [目录](directory.md)
- 上一节:[构建并运行 Go 程序](03.4.md)
- 下一节:[生成代码文档](03.6.md)