


Explication détaillée de l'utilisation de l'instruction switch et de l'instruction select dans Golang
Cet article vous présente principalement le didacticiel d'utilisation de switch et select dans Golang. L'article présente l'utilisation de instruction switch et de l'instruction select de manière très détaillée à travers un exemple de code, ce qui est d'une certaine importance pour tout le monde. . En référence à la valeur de l'apprentissage, les amis dans le besoin peuvent suivre l'éditeur pour apprendre ensemble.
Cet article vous présente principalement le contenu pertinent sur l'utilisation de switch et select dans Golang. Il est partagé pour votre référence et votre apprentissage. Jetons un coup d'œil à l'introduction détaillée :
<.>1. Instruction Switch
1. Instruction de changement d'expression
var name string ... switch name { case "Golang": fmt.Println("Golang") case "Rust": fmt.Println("Rust") default: fmt.Println("PHP是世界上最好的语言") }
names := []string{"Golang","java","PHP"} switch name:=names[0];name { case "Golang": fmt.Println("Golang") ... default: fmt.Println("Unknown") }
2. Tapez l'instruction switch < Il existe deux différences entre l'instruction switch de type 🎜>
et la forme générale. Le premier point est que ce qui suit le mot-clé case n’est pas une expression, mais un spécificateur de type. Un spécificateur de type se compose de plusieurs littéraux de type, et plusieurs littéraux de type sont séparés par des virgules. Le deuxième point est que son expression switch est très particulière. Cette expression spéciale joue également le rôle d'assertion de type, mais son expression est très particulière, comme par exemple :
interface v.(type)
. Ce type d'expression ne peut apparaître que dans les instructions switch de type et ne peut servir que d'expressions switch. Un exemple d'instruction de type switch est le suivant :
v := 11 switch i := interface{}(v).(type) { case int, int8, int16, int32, int64: fmt.Println("A signed integer:%d. The type is %T. \n", v, i) case uint, uint8, uint16, uint32, uint64: fmt.Println("A unsigned integer: %d. The type is %T. \n", v, i) default: fmt.Println("Unknown!") }
A signed integer:11. The type is int.
Enfin, parlons de la chute. C'est à la fois un mot-clé et peut représenter une déclaration. Une instruction de remplacement peut être incluse dans une instruction case au sein d'une instruction switch d'expression. Sa fonction est de transférer le contrôle au cas suivant. Cependant, veuillez noter que l'instruction fallthrough ne peut apparaître que comme dernière instruction dans l'instruction case. De plus, l'instruction case qui la contient n'est pas la dernière instruction case de l'instruction switch à laquelle elle appartient.
2. Instruction Select
La fonction de sélection de Golang est similaire à Select, Poll et epoll, qui est de surveiller le fonctionnement IO, lorsqu'une opération IO se produit, l'action correspondante est déclenchée.
Exemple :
ch1 := make (chan int, 1) ch2 := make (chan int, 1) ... select { case <-ch1: fmt.Println("ch1 pop one element") case <-ch2: fmt.Println("ch2 pop one element") }
Dans cet exemple, select attendra qu'une certaine instruction case soit terminée, c'est-à-dire jusqu'à ce que les données soient lues avec succès à partir de ch1 ou ch2. L'instruction select se termine.
L'instruction break peut également être incluse dans l'instruction case dans l'instruction select. Sa fonction est de mettre immédiatement fin à l'exécution de l'instruction select en cours. Indépendamment du fait qu'il existe ou non des instructions non exécutées dans l'instruction case à laquelle elle appartient.
[Utilisez select pour implémenter le mécanisme de délai d'attente]
comme suit :
timeout := make(chan bool, 1) go func() { time.Sleep(time.Second * 10) timeout <- true }() select { case <-pssScanResponseChan: case <-timeout: fmt.PrintIn("timeout!") }
. Au lieu de toujours bloquer sur l'opération de lecture du ch. Ceci implémente le paramètre de délai d'attente pour les opérations de lecture ch.
Le suivant est plus intéressant.
Lorsque l'instruction select contient default :
ch1 := make (chan int, 1) ch2 := make (chan int, 1) select { case <-ch1: fmt.Println("ch1 pop one element") case <-ch2: fmt.Println("ch2 pop one element") default: fmt.Println("default") }
Grâce à cette fonctionnalité par défaut, nous pouvons utiliser l'instruction select pour détecter si le chan est plein.
est le suivant :
ch := make (chan int, 1) ch <- 1 select { case ch <- 2: default: fmt.Println("channel is full !") }
Par exemple, si nous avons un service, lorsqu'une demande arrive, nous générerons un travail et le lancerons dans le canal, et d'autres coroutines récupéreront le travail du canal pour exécution. Mais nous espérons que lorsque la chaîne sera masquée, nous abandonnerons le travail et répondrons [Le service est occupé, veuillez réessayer plus tard. ] Vous pouvez utiliser select pour répondre à cette exigence.
此外,利用default特性,我们可以使用select语句将chan清空,如下:
flag := false for { select { case <-pssScanResponseChan: continue default: flag = true } if true == flag { break } }
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

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

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)

Lire et écrire des fichiers en toute sécurité dans Go est crucial. Les directives incluent : Vérification des autorisations de fichiers Fermeture de fichiers à l'aide de reports Validation des chemins de fichiers Utilisation de délais d'attente contextuels Le respect de ces directives garantit la sécurité de vos données et la robustesse de vos applications.

Dans PHP8, les expressions de correspondance sont une nouvelle structure de contrôle qui renvoie différents résultats en fonction de la valeur de l'expression. 1) Il est similaire à une instruction Switch, mais renvoie une valeur au lieu d'un bloc d'instruction d'exécution. 2) L'expression de correspondance est strictement comparée (===), ce qui améliore la sécurité. 3) Il évite les éventuelles omissions de rupture dans les instructions de commutation et améliore la simplicité et la lisibilité du code.

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, ...

Comment fusionner les éléments du tableau avec le même ID dans un seul objet en JavaScript? Lors du traitement des données, nous rencontrons souvent la nécessité d'avoir le même ID ...

L'utilisation de fuseaux horaires prédéfinis dans Go comprend les étapes suivantes : Importez le package « time ». Chargez un fuseau horaire spécifique via la fonction LoadLocation. Utilisez le fuseau horaire chargé dans des opérations telles que la création d'objets Time, l'analyse de chaînes horaires et l'exécution de conversions de date et d'heure. Comparez les dates en utilisant différents fuseaux horaires pour illustrer l'application de la fonctionnalité de fuseau horaire prédéfini.

Une stratégie pour éviter les erreurs causées par défaut dans les instructions de commutateur C: utilisez des énumérations au lieu des constantes, limitant la valeur de l'instruction de cas à un membre valide de l'énumération. Utilisez Fallthrough dans la dernière instruction de cas pour permettre au programme de continuer à exécuter le code suivant. Pour les instructions de commutation sans tomber, ajoutez toujours une instruction par défaut pour la gestion des erreurs ou fournissez un comportement par défaut.

Les meilleures pratiques de défaut en C en C: placez-la à la fin de l'instruction Switch comme traitement par défaut pour les valeurs inégalées; Il est utilisé pour gérer les valeurs inconnues ou non valides pour améliorer la robustesse du programme; Évitez la duplication avec les branches de cas pour maintenir la concision; Commentez clairement l'objectif de la branche par défaut pour améliorer la lisibilité; Évitez d'utiliser plusieurs défauts dans un cas pour maintenir la clarté; garder la branche par défaut concise et éviter les opérations complexes; Envisagez d'utiliser les valeurs d'énumération comme conditions de cas pour améliorer la maintenabilité; Dans de grandes instructions de commutation, utilisez plusieurs branches par défaut pour gérer différentes situations.

GO Language fonctionne bien dans la construction de systèmes efficaces et évolutifs. Ses avantages incluent: 1. Haute performance: compilé en code machine, vitesse de course rapide; 2. Programmation simultanée: simplifier le multitâche via les goroutines et les canaux; 3. Simplicité: syntaxe concise, réduction des coûts d'apprentissage et de maintenance; 4. Plate-forme multipliée: prend en charge la compilation multiplateforme, déploiement facile.
