为什么go fmt允许空括号?

为什么go fmt允许空括号?,go,Go,我只是想知道为什么这些括号在运行go fmt后没有被移除,它们的使用有什么功能吗 package main import "fmt" func main() { fmt.Println("Hello, 世界") { { { } } } } 例如,谢谢。它们的功能基本上类似于内部名称空间,因此在封装大括号之间插入的任何定义在其外部都不可见 // ... other code abo

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

package main

import "fmt"

func main() {

    fmt.Println("Hello, 世界")

    {
        {
            {

            }

        }
    }
}

例如,谢谢。

它们的功能基本上类似于内部名称空间,因此在封装大括号之间插入的任何定义在其外部都不可见

// ... other code above ...

{
  a := 5 // declare a
}

a = 5 // compiler error, a is undeclared

和其他格式化工具,如
gofmt
autopep8
(对于python),除了在现有代码中添加/删除空格或换行符外,不会修改给定文件

它们的功能基本上类似于内部名称空间,因此在封装大括号之间插入的任何定义在其外部都不可见

// ... other code above ...

{
  a := 5 // declare a
}

a = 5 // compiler error, a is undeclared

和其他格式化工具,如
gofmt
autopep8
(对于python),除了在现有代码中添加/删除空格或换行符外,不会修改给定文件

括号本身表示代码。根据规范:

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


这些是Go语法的一部分,
Go fmt
根据其格式规则对其进行格式设置

括号本身表示代码。根据规范:

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


这些是Go语法的一部分,
Go fmt
根据其格式规则对其进行格式设置

添加和删除代码听起来像是格式化命令的功能吗?@hobbs这个工具确实删除了空格和分号,这是一个好问题,我的回答是@Plato,我想确定这些块是否构成代码。添加和删除代码听起来像是格式化命令的功能吗?@hobbs这个工具确实删除了空格和分号,这是一个好问题,这将是我的回答@Plato,我想确定这些块是否构成代码。谢谢Jim,在我提出更多的围棋问题之前,我将阅读所有的规范。谢谢你的帮助。想象一下你写了一个布局模板的代码。类似于:
if a==b{}else{}
当你点击Ctrl+S时,如果编辑器删除了
{}
(有些已经启用了自动格式化),你会很生气的。谢谢Jim,在我提出问题之前,我将阅读所有的规范。谢谢你的帮助。想象一下你写了一个布局模板的代码。类似于:
if a==b{}else{}
当你点击Ctrl+S时,如果编辑器删除了
{}
(有些已经启用了自动格式化),你会很生气的