提供された Go コードの main 関数内で、定数をシャドウするローカル変数名が定義されています。または同じ名前のパッケージレベルの変数。これは、混乱や誤った動作につながる可能性があります。
Go では、新しい変数が関数内で宣言されると、関数内で定義された同じ名前を持つ他の変数よりも優先されます。より高いレベル (たとえば、パッケージレベルのスコープ内)。これは変数シャドウイングとして知られています。
main 関数内で定数またはパッケージ レベルの変数名を参照する場合、関数を表す識別子名を直接使用することはできません。 -レベル変数。代わりに、次のいずれかのアプローチを使用できます:
const name = "Yosua" func main() { localName := name name := "Jobs" fmt.Println(name) // Jobs fmt.Println(localName) // Yosua }
const name = "Yosua" func getName() string { return name } func main() { name := "Jobs" fmt.Println(name) // Jobs fmt.Println(getName()) // Yosua }
パッケージ レベルの変数が const の代わりに var を使用して宣言されている場合、関数内でシャドウして再代入できます。このような場合、上記のいずれかの方法を使用すると、元の値が確実に保持されます。
以上がGo でローカル変数によってシャドウされている場合に定数とパッケージ レベルの変数にアクセスする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。