Yos*_*nar 1 scope reference identifier go
package main
import "fmt"
const name = "Yosua"
// or var name string = "James"
func main() {
name := "Jobs"
fmt.Println(name)
}
Run Code Online (Sandbox Code Playgroud)
如何引用常量而不是函数级变量?
你不能.局部变量name在范围内时,名称name表示局部变量.并且没有"限定符"来引用顶级标识符.
块中声明的标识符可以在内部块中重新声明.虽然内部声明的标识符在范围内,但它表示内部声明声明的实体.
如果需要同时访问顶级常量/变量和局部变量,请使用不同的名称.
如果由于某种原因你不能或不想,你可以先保存顶级常量或变量的值:
cname := name
name := "Jobs"
fmt.Println(name)
fmt.Println(cname)
Run Code Online (Sandbox Code Playgroud)
或者您可以提供其他方式来访问它,例如功能:
func getName() string {
return name
}
name := "Jobs"
fmt.Println(name)
fmt.Println(getName())
Run Code Online (Sandbox Code Playgroud)
两种情况下的输出(在Go Playground上尝试):
Jobs
Yosua
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
698 次 |
| 最近记录: |