GoLang gofmt命令

时间:2016-07-22 06:53:46

标签: go gofmt

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

代码:

package main

import "fmt"

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

gofmt的输出hello.go

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

如果我把空格放在任何地方,它会正确地格式化。 gofmt不会格式化大括号吗?

3 个答案:

答案 0 :(得分:6)

你必须将大括号放在函数声明的同一行,否则你的代码因为语法错误而无法编译

  

为什么有括号但没有分号?为什么我不能将开口支撑放在下一行?

     

Go使用括号括号进行语句分组,这是一种熟悉的语法   使用C系列中任何语言的程序员。   但是,分号用于解析器,而不是用于人,我们想要   尽可能地消除它们。为了实现这个目标,Go借了一个   来自BCPL的技巧:分隔语句的分号在   正式语法,但是自动注入,没有前瞻性   可能是声明结尾的任何行末尾的词法分析器。   这在实践中非常有效,但却具有强制性的效果   支撑式。例如,函数的开括号不能   单独出现在一条线上。

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

答案 1 :(得分:3)

您的代码有语法错误:将打开的花括号放在与功能声明相同的行中。
程序片段必须是语法上有效的才能使用gofmt:

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

  

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

答案 2 :(得分:0)

将开放的花括号放在与函数声明相同的行中 也许你应该将gofmt添加到你的编辑器中,它可以避免代码格式的问题