Go での defer の使用
Go の defer キーワードを使用すると、周囲の関数が戻る直前に関数を実行でき、アクションが確実に実行されます。
関数に配置されたコードよりも遅延する利点End
例:
Try-finally リソースクリーンアップ:
func main() { f, err := os.Create("file") if err != nil { panic("cannot create file") } defer f.Close() fmt.Fprintf(f, "hello") }
パニック処理で最終的にトライキャッチ:
func main() { defer func() { msg := recover() fmt.Println(msg) }() f, err := os.Create(".") // . is the current directory if err != nil { panic("cannot create file") } defer f.Close() fmt.Fprintf(f, "hello") }
修正されたリターン値:
func yes() (text string) { defer func() { text = "no" }() return "yes" } func main() { fmt.Println(yes()) // Prints "no" }
要約すると、Go の defer は、ネストされたブロック構造を必要とせずに、リソースのクリーンアップを確実にし、パニックを処理し、実行順序を制御する柔軟な方法を提供します。
以上がGo の「defer」キーワードはリソース管理とパニック処理をどのように簡素化しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。