「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > GOの初期化後、グローバルエラー変数がパニックにならないのはなぜですか?

GOの初期化後、グローバルエラー変数がパニックにならないのはなぜですか?

2025-03-23に投稿されました
ブラウズ:827

Why Doesn't My Global Error Variable Panic After Initialization in Go?

グローバルエラー変数が初期化後にパニックにならないのはなぜですか?この矛盾は、さまざまなスコープの誤解から生じます。 f、loaderr:= os.open( "asdasd") loaderr!= nil { checkerr() } f!= nil { fmt.println(f.name()) } }

この行は、FとLoaderrの両方に新しいローカル変数を作成します。関数の外部で定義されているグローバル変数を変更しません。したがって、checkerr()を呼び出すと、メイン関数の範囲内に設定されていないため、loaderrはまだゼロです。 _、err:= os.open( "asdasd") loaderr = err loaderr!= nil { checkerr() } }

を使用することにより、ローカルERR変数の値をグローバルLoaderR変数に明示的に割り当てます。これにより、function checkerr()が修正されたグローバル変数にアクセスし、パニックをトリガーできます。最初の例では、定義を移動することにより、Loaderrをメイン関数の外側のグローバル変数として宣言できます。 func main(){ _、loaderr = os.open( "asdasd") loaderr!= nil { checkerr() } f!= nil { fmt.println(f.name()) } }

これにより、グローバルLoaderr変数がプログラム全体でアクセス可能で更新されることが保証されます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3