引用常量或包级变量而不是函数级变量

Refer to constant or package level variable instead of function level variable

package main

import "fmt"

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

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

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

你不能。当局部变量 name 在范围内时,名称 name 表示局部变量。并且没有"qualifier"引用顶级标识符。

Spec: Declarations and scope:

An identifier declared in a block may be redeclared in an inner block. While the identifier of the inner declaration is in scope, it denotes the entity declared by the inner declaration.

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

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

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