为什么去fmt允许空括号?

时间:2016-07-08 21:07:13

标签: go

我只是想知道为什么在运行 go fmt 后这些括号没有删除,它们的使用是否有功能?

package main

import "fmt"

func main() {

    fmt.Println("Hello, 世界")

    {
        {
            {

            }

        }
    }
}

示例here,谢谢。

2 个答案:

答案 0 :(得分:2)

它们的功能基本上类似于内部命名空间,因此您在封装支架之间放置的任何定义都不会在其外部可见。

// ... other code above ...

{
  a := 5 // declare a
}

a = 5 // compiler error, a is undeclared

加上gofmtautopep8(对于python)等格式化工具,除了向现有代码添加/删除空格或换行符之外,不会修改给定文件。

答案 1 :(得分:2)

Brackets自己表示代码Blocks。来自规范:

  

块是匹配括号括号内的可能为空的声明和语句序列。

这些是Go语法的一部分,go fmt根据其格式规则对它们进行格式化。