gofmt命令不会格式化花括号({})。
代码:
package main
import "fmt"
func main()
{
fmt.Printf("Hello, world\n")
}
gofmt的输出hello.go
hello.go:6:1:预期声明,发现' {' 退出状态2
如果我把空格放在任何地方,它会正确地格式化。 gofmt不会格式化大括号吗?
答案 0 :(得分:6)
你必须将大括号放在函数声明的同一行,否则你的代码因为语法错误而无法编译
为什么有括号但没有分号?为什么我不能将开口支撑放在下一行?
Go使用括号括号进行语句分组,这是一种熟悉的语法 使用C系列中任何语言的程序员。 但是,分号用于解析器,而不是用于人,我们想要 尽可能地消除它们。为了实现这个目标,Go借了一个 来自BCPL的技巧:分隔语句的分号在 正式语法,但是自动注入,没有前瞻性 可能是声明结尾的任何行末尾的词法分析器。 这在实践中非常有效,但却具有强制性的效果 支撑式。例如,函数的开括号不能 单独出现在一条线上。
答案 1 :(得分:3)
您的代码有语法错误:将打开的花括号放在与功能声明相同的行中。
和程序片段必须是语法上有效的才能使用gofmt:
见:https://golang.org/cmd/gofmt/它说:
当gofmt从标准输入读取时,它接受完整的Go 程序或程序片段。 程序片段必须是a 语法有效的声明列表,语句列表或表达式。 格式化这样的片段时,gofmt会保留前导缩进 以及前导和尾随空格,以便各个部分 Go程序可以通过gofmt管道化来格式化。
答案 2 :(得分:0)
将开放的花括号放在与函数声明相同的行中 也许你应该将gofmt添加到你的编辑器中,它可以避免代码格式的问题