【问题标题】:GoLang gofmt commandGoLang gofmt 命令
【发布时间】:2016-07-22 06:53:45
【问题描述】:

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

代码:

package main

import "fmt"

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

gofmt hello.go 的输出

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

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

【问题讨论】:

  • 请注意,在 Go 中,花括号应与函数声明内联使用!

标签: go gofmt


【解决方案1】:

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

为什么有大括号而没有分号?为什么我不能把左大括号放在下一行?

Go 使用大括号进行语句分组,这是一种熟悉的语法 使用过 C 家族中任何一种语言的程序员。 然而,分号是用于解析器的,而不是用于人的,我们想要 尽可能消除它们。为了实现这个目标,Go 借用了一个 来自 BCPL 的技巧:分隔语句的分号位于 形式语法,但自动注入,无需前瞻,由 任何可能是语句结尾的行末尾的词法分析器。 这在实践中效果很好,但效果是它迫使 大括号样式。例如,函数的左大括号不能 单独出现在一行上。

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

【讨论】:

    【解决方案2】:

    您的代码有语法错误:将大括号与函数声明放在同一行。
    并且程序片段必须在语法上有效才能使用 gofmt:

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

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

    【讨论】:

      【解决方案3】:

      把大括号和函数声明放在同一行 也许你应该在你的编辑器中添加 gofmt,它可以避免代码格式的问题

      【讨论】:

        猜你喜欢
        • 2016-08-15
        • 1970-01-01
        • 1970-01-01
        • 2021-07-15
        • 1970-01-01
        • 2017-07-03
        • 2015-10-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多