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

时间:2016-03-06 18:20:34

标签: variables go syntax declaration

我试图在Go中找到关于括号括起的变量声明语法的一些信息,但也许我只是不知道它的名字,这就是为什么我找不到它(就像使用例如值和指针接收器一样)。 / p>

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

package main

import (
    "path"
)

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

func main() {
  // whatever
}

var ()块中的变量是否可以在导入此变量的模块中使用?

2 个答案:

答案 0 :(得分:11)

此代码

// 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
)

同样的技巧也适用于const

答案 1 :(得分:7)

var (...)(和const (...)只是简写,可以避免重复使用var关键字。对于像这样的单个变量,它没有多大意义,但如果你有多个变量,它可以看起来更好,以这种方式分组。

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