Utilisation de defer dans Go
Le mot-clé defer dans Go vous permet d'exécuter une fonction juste avant le retour de la fonction environnante, garantissant que les actions sont pris même en cas de panique.
Avantages du report par rapport au code placé sur la fonction Fin
Exemples :
Ressource Try-finally Nettoyage :
func main() { f, err := os.Create("file") if err != nil { panic("cannot create file") } defer f.Close() fmt.Fprintf(f, "hello") }
Essayez-attrapez-enfin avec la gestion de la panique :
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") }
Retour modifié Valeurs :
func yes() (text string) { defer func() { text = "no" }() return "yes" } func main() { fmt.Println(yes()) // Prints "no" }
En résumé, le report dans Go offre un moyen flexible d'assurer le nettoyage des ressources, de gérer les paniques et de contrôler l'ordre d'exécution sans avoir besoin de structures de blocs imbriquées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!