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

Chr*_*ris -1 go

例如

package main

import "fmt"

const s string = "constant"

func main() {
    const s = 0
    fmt.Println(s)
}
Run Code Online (Sandbox Code Playgroud)

实际打印

0 
Run Code Online (Sandbox Code Playgroud)

然而我在主要之前宣称它是"不变的".

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

rig*_*old 8

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

这个程序证明了这一点:

package main

import "fmt"

func main() {
    const a = 0
    fmt.Println(a)
    {
        const a = 1
        fmt.Println(a)
    }
    fmt.Println(a)
}
Run Code Online (Sandbox Code Playgroud)

输出如下:

0
1
0
Run Code Online (Sandbox Code Playgroud)