golang的go fmt是否不格式化括号?

时间:2018-07-31 21:09:27

标签: go

所以我一直在尝试再次使用golang,我记得go有一个格式化工具可以清理您的源代码。因此,当我在项目上运行go fmt时,会吐出以下错误:

expected declaration, found '{'

我期望go fmt能够修正括号以遵守go的语法要求,但它只会吐出一个错误。这是预期的功能,还是应该将括号实际放在正确的行上(与函数声明相同)?

我期望正确格式化的基本代码:

package main

func main()
{
    println("Learning go again")
}

1 个答案:

答案 0 :(得分:8)

Go对于有效代码是什么有很强烈的看法。
这是其中一种情况。与许多其他C系列语言不同,C语言允许将函数体声明的大括号放在同一行或下一行(如果您愿意,甚至可以在其后十行),Go编译器只允许将其放在同一行。

另一个例子是else语句。用其他语言

if {
}
else {
}

可能是有效的,甚至是首选的,在Go中,仅编译else语句的形式为

if {
} else {
}

go fmt可以解决空白或缺少空格的问题:

func main()             {
    fmt.Println("Hello, playground")
}

func main(){
   fmt.Println("Hello, playground")
}

都将成为

func main() {
   fmt.Println("Hello, playground")
}