defer および Panic キーワードは、例外と後処理を制御するために使用されます。 defer: 関数をスタックにプッシュし、関数が戻った後に実行します。リソースを解放するためによく使用されます。パニック: 例外をスローしてプログラムの実行を中断し、実行を継続できない重大なエラーを処理するために使用されます。違いは、defer は関数が正常に戻った場合にのみ実行されるのに対し、panic はエラーが発生した場合でも、いかなる状況でも実行されることです。
Go 関数の defer と Panic
defer と Panic は Go の強力なキーワードであり、例外と後処理を実現できます。構成処理のきめ細かい制御。
#defer
defer キーワードは、関数が戻る前に指定された関数を実行するために使用されます。関数をスタックにプッシュし、関数が戻った後に実行します。 defer は、ファイルやネットワーク接続を閉じるなど、関数の終了時にリソースを解放するためによく使用されます。
文法:
defer func() {...}
実際のケース:
func OpenFile() { file, err := os.Open("myfile.txt") if err != nil { log.Fatal(err) } defer file.Close() // 文件将在 OpenFile 返回后立即关闭 }
panic
Panic キーワードは、回復不可能なエラーが発生したときにプログラムを中断するために使用されます。例外がスローされ、関数とそれを呼び出すすべての関数が実行を停止します。パニックは通常、プログラムの実行継続を妨げるエラーなどの重大なエラーに対処するために使用されます。
文法:
panic(any)
実践例:
func ValidateUser(username, password string) { if username == "" { panic("用户名不能为空") // 抛出一个 panic,因为用户名不能为空 } // ... }
遅延とパニックの違い
ベスト プラクティス
以上がgolang 関数の遅延とパニックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。