Go中这个括号括起来的变量声明语法是什么?

What is this parenthesis enclosed variable declaration syntax in Go?

我试图在 Go 中找到一些关于括号括起来的变量声明语法的信息,但也许我只是不知道它的名字,这就是我找不到它的原因(就像值和指针接收器一样)。

即我想知道这种语法背后的规则:

package main

import (
    "path"
)

// What's this syntax ? Is it exported ? 
var (
    rootDir = path.Join(home(), ".coolconfig")
)

func main() {
  // whatever
}

var () 块中的那些变量在导入这个块的模块中可用吗?

var (...)(而 const (...) 只是 shorthand 让你避免重复 var 关键字。它对单个变量没有多大意义像这样,但如果您有多个变量,以这种方式对它们进行分组看起来会更好。

与导出无关。以这种方式声明的变量根据其名称的大小写导出(或不导出),就像没有括号声明的变量一样。

这个代码

// What's this syntax ? Is it exported ? 
var (
    rootDir = path.Join(home(), ".coolconfig")
)

只是一种较长的写法

var rootDir = path.Join(home(), ".coolconfig")

然而,它在一次声明大量变量时很有用。而不是

var one string
var two string
var three string

你可以写

var (
    one string
    two string
    three string
)

同样的技巧也适用于 consttype