注意,由于第二次调用gofmt
会再次更改代码:
$ cat test.go
package p
func f() {
foo(); /* one */ fooooo(); /* two */
}
$ cat test.go | gofmt
package p
func f() {
foo() /* one */
fooooo() /* two */
}
$ cat test.go | gofmt | gofmt
package p
func f() {
foo() /* one */
fooooo() /* two */
4条答案
按热度按时间qq24tv8q1#
仅供参考,以下是测试后的休息时间:
yi0zb3m42#
https://golang.org/cl/130377提到了这个问题:
cmd/gofmt: skip gofmt idempotency check on known issue
20jt8wwn3#
坏文件测试
fixedbugs/issue22662.go
(在没有-short
的情况下在TestAll
中运行时导致 std 库测试套件中的失败)现已跳过(CL 130377)。当此问题修复后,应重新启用对该文件的检查。lrl1mhuk4#
这个问题似乎是由以下代码块引起的。
go/src/go/printer/printer.go
第383行到第388行
| | ifpos.Line==next.Line { |
| | // next item is on the same line as the comment |
| | // (which must be a /*-style comment): separate |
| | // with a blank instead of a tab |
| | sep=' ' |
| | } |
当下一个标记与注解在同一行时,这会将空格字符附加到
\t
上,而不是换行符。然而,在格式化后,下一个标记不一定在同一行。