Go の条件文内の変数スコープ
Go で、特に条件付き if 文内で変数スコープの微妙な違いをナビゲートする場合、次のようになります。変数を利用するときにステートメント内で変数を定義できないことに遭遇して困惑する
次の場合を考えてみましょう:
if len(array1) > len(array2) { new1 := make([]string, 0, len(array1)) // Use new1... } else { new1 := make([]string, 0, len(array2)) // Use new1... }
if ブロック内で new1 を宣言できないため、このコードではエラーが発生します。ただし、ブロックの前に作成すると、そのサイズが比較の結果に依存するため問題が発生します。
解決策
最適な回避策は、if の前に new1 を宣言することです。ステートメント内で make をブロックして利用します:
var new1 []string if len(array1) > len(array2) { new1 = make([]string, 0, len(array1)) // Use new1... } else { new1 = make([]string, 0, len(array2)) // Use new1... }
これにより、条件付き結果に基づいたサイズで new1 を作成できます。 if ブロックの外側でアクセシビリティを維持します。
以上がGo の条件付き `if` ステートメント内で変数を適切に宣言して使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。