为什么我可以重新申请一个const?

时间:2015-02-18 22:07:39

标签: go

例如

package main

import "fmt"

const s string = "constant"

func main() {
    const s = 0
    fmt.Println(s)
}

实际打印

0 

然而我宣称它是"常数"在主要之前。

我以为你无法改变常数。如果不是这样,为什么不使用其他类型?

1 个答案:

答案 0 :(得分:8)

这是main范围内的新常量。它不会改变外部范围中的那个。查看阴影。

这个程序很好地证明了这一点:

package main

import "fmt"

func main() {
    const a = 0
    fmt.Println(a)
    {
        const a = 1
        fmt.Println(a)
    }
    fmt.Println(a)
}

输出如下:

0
1
0