一尘不染

引用常量或包级别变量而不是功能级别变量

go

package main

import "fmt"

const name = "Yosua"
// or var name string = "James"

func main() {
    name := "Jobs"
    fmt.Println(name)
}

如何引用常量而不是函数级别变量?


阅读 240

收藏
2020-07-02

共1个答案

一尘不染

你不能 当局部变量name在作用域内时,名称name表示局部变量。并且没有“限定符”来引用顶级标识符。

规格:声明和范围:

可以在内部块中重新声明在块中声明的标识符。内部声明的标识符在范围内,它表示内部声明声明的实体。

如果您需要同时访问顶级常量/变量和局部变量,请使用不同的名称。

如果由于某种原因您不愿意或不想这样做,可以先保存顶级常量或变量的值:

cname := name
name := "Jobs"
fmt.Println(name)
fmt.Println(cname)

或者,您可以提供其他方式来访问它,例如一个函数:

func getName() string {
    return name
}

name := "Jobs"
fmt.Println(name)
fmt.Println(getName())

两种情况下都输出(在Go Playground上尝试):

Jobs
Yosua
2020-07-02