2016-07-22 74 views
1

gofmt命令不会格式化花括号({})。GoLang gofmt命令

代码:

package main 

import "fmt" 

func main() 
{ 
    fmt.Printf("Hello, world\n") 
} 

gofmt hello.go的输出

hello.go:6:1:预期声明,实测 '{' 退出状态2

如果我把它可以在任何地方正确格式化。 gofmt是否不格式化大括号?

+2

请注意,在进入大括号应使用内联函数声明! –

回答

6

你必须把大括号在同一行的函数声明的,否则你的代码不会因为这个语法错误

为什么有括号,但没有分号的编译?为什么我不能把大括号放在下一行?

Go使用括号括起来作为语句分组,012h曾使用过C语言中任何语言的程序员熟悉的语法。 然而,分号用于解析器,不适用于人,我们希望 尽可能地消除它们。为了实现这个目标,Go借用了BCPL的一个 技巧:分隔语句的分号在 形式语法中,但是在没有前瞻的情况下被自动注入, 在任何可能是语句结束的行末尾的词法分析器。 这在实践中效果很好,但具有强制 支架样式的效果。例如,函数的大括号不能单独出现在一行上。

https://golang.org/doc/faq#semicolons

3

你的代码有语法错误:把花括号与函数声明的同一行。
的程序片段必须是语法上有效的使用gofmt:

见:https://golang.org/cmd/gofmt/它说:

当gofmt从标准输入读取时,可接收一个完整的围棋 程序或程序片段。 程序片段必须是 语法上有效的声明列表,语句列表或表达式。 格式化这样一个片段时,gofmt保留前导缩进 以及前导和尾随空格,因此Go程序的各个部分可以通过将它们通过gofmt管道化来格式化。

0

把花括号与函数声明的同一行 也许你应该添加gofmt到你的编辑器,这样可避免代码格式的问题