Go 参考常量或包级别变量,而不是函数级别变量

Go 参考常量或包级别变量,而不是函数级别变量,go,scope,reference,identifier,Go,Scope,Reference,Identifier,如何引用常量而不是函数级别变量?您不能。当局部变量name在作用域中时,namename表示局部变量。并且没有“限定符”来指代顶级标识符 块中声明的标识符可以在内部块中重新声明。当内部声明的标识符在范围内时,它表示由内部声明声明的实体 如果需要同时访问顶级常量/变量和局部变量,请使用不同的名称 如果出于某种原因您不能或不想,可以先保存顶级常量或变量的值: package main import "fmt" const name = "Yosua" // or var name string

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

您不能。当局部变量
name
在作用域中时,name
name
表示局部变量。并且没有“限定符”来指代顶级标识符

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

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

如果出于某种原因您不能或不想,可以先保存顶级常量或变量的值:

package main

import "fmt"

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

func main() {
    name := "Jobs"
    fmt.Println(name)
}
或者,您可以提供其他方式访问它,例如功能:

cname := name
name := "Jobs"
fmt.Println(name)
fmt.Println(cname)
两种情况下的输出(请在上尝试):


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

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

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

如果出于某种原因您不能或不想,可以先保存顶级常量或变量的值:

package main

import "fmt"

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

func main() {
    name := "Jobs"
    fmt.Println(name)
}
或者,您可以提供其他方式访问它,例如功能:

cname := name
name := "Jobs"
fmt.Println(name)
fmt.Println(cname)
两种情况下的输出(请在上尝试):


这将无法编译。我不得不问,为什么要这样做?啊,对不起,我忘记删除包级别变量,所以它无法编译。我只是想确保Golang能做到。这不会编译。我不得不问,为什么要这样做?啊,对不起,我忘记删除包级别变量,所以它无法编译。我只是想确保Golang能做到。