Golang:声明单个常量

4
哪种方式是在Go中声明单个常量的首选方式?
1)
const myConst

2)
const (
        myConst
)

两种方式都被gofmt接受。这两种方式都可以在stdlib中找到,但是第一种方式更常用。

1个回答

8
第二种形式主要用于将多个常量声明分组。
如果只有一个常量,则第一种形式就足够了。
例如,archive/tar/reader.go
const maxNanoSecondIntSize = 9

但是在archive/zip/struct.go中:

// Compression methods.
const (
        Store   uint16 = 0
        Deflate uint16 = 8
)

这并不意味着你必须将所有常量分组到一个const()中:当你有通过iota(连续整数)初始化的常量时,每个块都会计算。
例如,请参见cmd/yacc/yacc.go
// flags for state generation
const (
    DONE = iota
    MUSTDO
    MUSTLOOKAHEAD
)

// flags for a rule having an action, and being reduced
const (
    ACTFLAG = 1 << (iota + 2)
    REDFLAG
)

dalu评论中添加:

也可以使用importtypevar等方式,而且可以多次使用。

这是正确的,但你会发现iota只用于常量声明,如果你需要多组连续的整数常量,那么就必须定义多个const()块。


并且为了扩展答案,它也可以使用import、type、var等多次完成。 - user2312578
@dalu 很好的观点。为了更好地展示,我已将其包含在答案中。我还添加了 iota 的使用作为使用多个 const () 块的示例。 - VonC
在示例中,我看到常量名称使用大写和驼峰命名法。命名常量的首选方式是什么? - warvariuc
@warvariuc 一般的约定是使用MixedCaps命名法:http://golang.org/doc/effective_go.html#mixed-caps。更多信息请参考https://dev59.com/IGEh5IYBdhLWcg3wMBDM#22688926。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接