gofmt命令不会格式化花括号({})。
代码:
package main
import "fmt"
func main()
{
fmt.Printf("Hello, world\n")
}gofmt hello.go的输出
hello.go:6:1:需要声明,找到'{‘退出状态2
如果我把空格放在任何地方,它就会正确地格式化它。gofmt goes不格式化大括号吗?
发布于 2016-07-22 14:59:41
您必须将大括号放在函数声明的同一行中,否则您的代码将因此语法错误而无法编译
为什么有大括号而没有分号?为什么我不能把大括号放在下一行呢?
Go使用大括号对语句进行分组,这是使用过C系列中任何语言的程序员都熟悉的语法。然而,分号是给解析器用的,而不是给人用的,我们希望尽可能地消除它们。为了实现这一目标,Go借鉴了BCPL的一个技巧:在形式语法中,分隔语句的分号是自动注入的,而不需要提前查看,由lexer在任何可能是语句末尾的行尾注入。这在实践中工作得很好,但它的效果是强制使用大括号样式。例如,函数的左大括号不能单独出现在一行上。
发布于 2016-07-22 15:02:32
您的代码有语法错误:将左花括号放在与函数声明相同的一行中。
程序片段必须是语法上有效的才能使用:
看:https://golang.org/cmd/gofmt/上面写着:
当gofmt从标准输入读取时,它接受完整的Go程序或程序片段。程序片段必须是语法有效的声明列表、语句列表或表达式。在格式化这样的片段时,gofmt保留了前导缩进以及前导空格和尾随空格,这样Go程序的各个部分就可以通过管道传输到gofmt.
来格式化。
发布于 2016-07-23 10:56:02
把左大括号和函数声明放在同一行也许你应该在编辑器中添加gofmt,这样可以避免代码格式的问题
https://stackoverflow.com/questions/38520011
复制相似问题