関数レベルの変数よりも定数とパッケージ レベルの変数を参照する
Go では、シャドウイングを使用して変数または定数を宣言するのが一般的です異なるスコープ内で同じ名前を持つ。これは便利ですが、関数レベルの変数ではなく、元の定数またはパッケージ レベルの変数を参照する必要がある場合があります。
残念ながら、Go では、を直接参照することはできません。同じ名前のローカル変数が存在する場合は、定数またはパッケージ レベルの変数。これは、スコープの概念と、高レベルの宣言よりもローカル変数を優先する Go コンパイラーによるものです。
元の定数またはパッケージ レベルの変数にアクセスするには、代替手法を使用する必要があります。 1 つの方法は、ローカル変数を再割り当てする前に値を一時変数に保存することです:
cname := name name = "Jobs" fmt.Println(name) // Prints "Jobs" fmt.Println(cname) // Prints "Yosua"
もう 1 つの方法は、定数またはパッケージ レベル変数へのアクセスを提供する関数を作成することです:
func getName() string { return name } name = "Jobs" fmt.Println(name) // Prints "Jobs" fmt.Println(getName()) // Prints "Yosua"
これらの手法を使用すると、ローカル変数と元の定数またはパッケージレベルの変数の両方に同時にアクセスできます。ただし、これらの回避策が常に最も洗練された、または効率的な解決策であるとは限らないことに注意してください。コード内の名前の競合を避けるために慎重に検討する必要があります。
以上がGo でシャドウイングされている場合にパッケージレベルまたは定数変数にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。