


Comment implémenter la fonction d'arrêt du programme dans Golang
Lors de l'écriture d'applications Golang, vous rencontrerez parfois des situations dans lesquelles vous devrez arrêter le programme, par exemple lorsqu'une exception se produit dans le programme ou lorsqu'une condition spécifiée est atteinte. Alors comment implémenter la fonction d'arrêt du programme dans Golang ?
1. Utilisez la fonction os.Exit()
La fonction os.Exit() est une méthode fournie par la bibliothèque standard Go pour quitter le programme. Le paramètre de cette fonction est une valeur entière représentant l'état de sortie du programme. Normalement, un code d'état de 0 indique que le programme s'est terminé normalement, tandis qu'un code d'état autre que 0 indique qu'une exception s'est produite dans le programme.
os.Exit() mettra immédiatement fin au processus du programme en cours et renverra le code d'état spécifié par le système d'exploitation. S'il y a une instruction defer dans le programme, l'instruction defer sera exécutée en premier avant d'appeler os.Exit().
Par exemple, l'exemple de code ci-dessous montre comment utiliser os.Exit() pour arrêter un programme. Lorsque des caractères non numériques sont saisis, le programme génère un message d'erreur et quitte le programme.
package main import ( "fmt" "os" "strconv" ) func main() { var input string fmt.Print("请输入一个数字:") _, err := fmt.Scanln(&input) if err != nil { fmt.Println("输入错误:", err) os.Exit(1) } num, err := strconv.Atoi(input) if err != nil { fmt.Println("转换错误:", err) os.Exit(2) } fmt.Println("输入的数字是:", num) }
2. Utilisez le canal pour implémenter le programme d'arrêt
Une autre façon d'implémenter le programme d'arrêt consiste à utiliser le canal. Les mécanismes de coroutine et de canal de Golang constituent un moyen pratique de nous aider à quitter le programme en douceur sous certaines conditions.
Tout d'abord, nous devons définir une variable de canal pour recevoir le signal d'arrêt. Ensuite, en écoutant la chaîne du programme, lorsqu'un signal d'arrêt est reçu, le programme se termine activement.
Ce qui suit est un exemple de code simple qui montre comment utiliser un canal pour arrêter un programme :
package main import ( "fmt" "os" "os/signal" ) func main() { c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt) fmt.Println("正在运行...") <-c fmt.Println("程序已停止!") }
Cet exemple envoie un signal d'arrêt via os.Interrupt. Lorsque le programme reçoit ce signal, il affichera « Le programme s'est arrêté ! » et quittera le programme.
3. Utiliser le contexte pour arrêter le programme
Dans la version 1.7 de Golang, un nouveau type de contexte a été ajouté à la bibliothèque standard, qui est utilisé pour transmettre le contexte (Context) entre plusieurs Goroutines pour arrêter le programme en douceur.
La fonction principale de Context est de gérer les délais d'attente des demandes, les annulations et les valeurs des demandes de transfert. Vous pouvez créer un objet Context avec une fonction d'annulation via context.WithCancel, puis arrêter le programme en surveillant l'événement de clôture de Context.Done().
Ce qui suit est un exemple de code basé sur le contexte. Lorsque le temps d'exécution du programme dépasse 5 secondes ou qu'un signal d'arrêt est reçu, le programme se termine normalement.
package main import ( "context" "fmt" "os" "os/signal" "time" ) func main() { ctx, cancel := context.WithCancel(context.Background()) // 监控系统信号 c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt) // 协程执行任务 go func() { for { select { case <-time.After(1 * time.Second): fmt.Println("执行任务...") case <-ctx.Done(): fmt.Println("任务已完成!") return } } }() // 监控停止信号 select { case <-c: fmt.Println("接收到停止信号,等待程序完成...") cancel() case <-time.After(5 * time.Second): fmt.Println("执行时间超过 5 秒,等待程序完成...") cancel() } // 完成程序退出 <-ctx.Done() fmt.Println("程序已经停止。") }
Cet exemple crée un objet Context ctx avec fonction d'annulation via context.WithCancel et transmet l'objet dans la coroutine. Le programme principal écoute les signaux d'arrêt et les signaux de délai d'exécution. Après avoir reçu les signaux, il envoie des informations d'arrêt à la coroutine en appelant la méthode Cancel(), afin que le programme puisse se terminer correctement.
En bref, Golang propose diverses façons d'implémenter facilement la fonction d'arrêt du programme. En fonction de la situation réelle, vous pouvez choisir différentes méthodes pour arrêter le programme en douceur.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

OpenSSL, en tant que bibliothèque open source largement utilisée dans les communications sécurisées, fournit des algorithmes de chiffrement, des clés et des fonctions de gestion des certificats. Cependant, il existe des vulnérabilités de sécurité connues dans sa version historique, dont certaines sont extrêmement nocives. Cet article se concentrera sur les vulnérabilités et les mesures de réponse communes pour OpenSSL dans Debian Systems. DebianopenSSL CONNUTS Vulnérabilités: OpenSSL a connu plusieurs vulnérabilités graves, telles que: la vulnérabilité des saignements cardiaques (CVE-2014-0160): cette vulnérabilité affecte OpenSSL 1.0.1 à 1.0.1F et 1.0.2 à 1.0.2 Versions bêta. Un attaquant peut utiliser cette vulnérabilité à des informations sensibles en lecture non autorisées sur le serveur, y compris les clés de chiffrement, etc.

L'article explique comment utiliser l'outil PPROF pour analyser les performances GO, notamment l'activation du profilage, la collecte de données et l'identification des goulots d'étranglement communs comme le processeur et les problèmes de mémoire. COMMANDE: 159

L'article traite des tests d'unité d'écriture dans GO, couvrant les meilleures pratiques, des techniques de moquerie et des outils pour une gestion efficace des tests.

La bibliothèque utilisée pour le fonctionnement du numéro de point flottante dans le langage go présente comment s'assurer que la précision est ...

Problème de threading de file d'attente dans Go Crawler Colly explore le problème de l'utilisation de la bibliothèque Crawler Crawler dans le langage Go, les développeurs rencontrent souvent des problèmes avec les threads et les files d'attente de demande. � ...

L'article discute de la gestion des dépendances des modules GO via Go.mod, couvrant les spécifications, les mises à jour et la résolution des conflits. Il met l'accent sur les meilleures pratiques telles que le versioning sémantique et les mises à jour régulières.

Chemin d'apprentissage du backend: le parcours d'exploration du front-end à l'arrière-end en tant que débutant back-end qui se transforme du développement frontal, vous avez déjà la base de Nodejs, ...

L'article discute de l'utilisation de tests basés sur la table dans GO, une méthode qui utilise un tableau des cas de test pour tester les fonctions avec plusieurs entrées et résultats. Il met en évidence des avantages comme une amélioration de la lisibilité, une duplication réduite, l'évolutivité, la cohérence et un
