Maison développement back-end Golang contrôle des processus Golang

contrôle des processus Golang

May 13, 2023 am 11:12 AM

Golang est un langage de programmation efficace et moderne qui offre de riches fonctionnalités en matière de contrôle de processus. Cet article explorera les structures de contrôle de flux dans Golang, y compris les instructions conditionnelles, les instructions de boucle et les instructions de saut, pour aider les lecteurs à mieux comprendre et appliquer ces structures.

Déclarations conditionnelles

Les déclarations conditionnelles dans Golang incluent les instructions if, les instructions switch et les instructions select.

  1. if instruction

if l'instruction est utilisée pour formuler des jugements conditionnels La syntaxe est la suivante :

if condition {
    statement(s)
} else if condition {
    statement(s)
} else {
    statement(s)
}
Copier après la connexion

où condition est une expression conditionnelle utilisée pour juger vrai ou faux. Si la condition est vraie, le bloc d'instructions suivant if est exécuté ; sinon, le bloc d'instructions est ignoré et l'instruction suivante est exécutée.

Si la condition est suivie du mot-clé else if, chaque expression conditionnelle sera évaluée dans l'ordre et le premier bloc d'instructions vrai sera exécuté. Si toutes les expressions conditionnelles sont fausses, le bloc d'instructions suivant le else est exécuté. Sans le bloc else, aucune instruction n'est exécutée si la condition est fausse.

Ce qui suit est un exemple d'instruction if :

package main

import "fmt"

func main() {
    var a int = 10
    if a < 20 {
        fmt.Printf("a 小于 20
")
    }
    fmt.Printf("a 的值为 : %d
", a)
}
Copier après la connexion

Résultat de sortie :

a 小于 20
a 的值为 : 10
Copier après la connexion
  1. instruction switch

l'instruction switch est utilisée pour le jugement multi-conditions, la syntaxe est la suivante :

switch expression {
    case value1:
        statement(s)
    case value2:
        statement(s)
    case value3:
        statement(s)
    default:
        statement(s)
}
Copier après la connexion

Où, l'expression est une expression, utilisée pour faire correspondre une constante ou une variable dans une clause case. Si la correspondance réussit, le bloc d'instructions correspondant est exécuté ; sinon, le bloc d'instructions est ignoré et la clause case suivante (si elle existe) est exécutée.

Si toutes les clauses case ne correspondent pas correctement, le bloc d'instructions suivant la valeur par défaut sera exécuté. S'il n'y a pas de clause par défaut, aucune instruction n'est exécutée.

Ce qui suit est un exemple d'instruction switch :

package main

import "fmt"

func main() {
    var grade string = "B"
    var marks int = 90

    switch marks {
        case 90:
            grade = "A"
        case 80:
            grade = "B"
        case 60, 70:
            grade = "C"
        default:
            grade = "D"
    }

    switch {
        case grade == "A" :
            fmt.Printf("优秀!
" )
        case grade == "B", grade == "C" :
            fmt.Printf("良好
" )
        case grade == "D" :
            fmt.Printf("及格
" )
        case grade == "F":
            fmt.Printf("不及格
" )
        default:
            fmt.Printf("差
" )
    }
    fmt.Printf("你的等级是 %s
", grade )
}
Copier après la connexion

Résultat de sortie :

良好!
你的等级是 B
Copier après la connexion
  1. instruction select

l'instruction select est utilisée pour surveiller plusieurs canaux en même temps La syntaxe est la suivante :

select {
    case communication clause 1:
        statement(s)
    case communication clause 2:
        statement(s)
    .............
    default:
        statement(s)
}
Copier après la connexion

Among. Pour eux, la clause de communication fait référence à un canal ou à une opération de canal avec direction, y compris l'opération d'envoi et l'opération de réception. Si un canal contient des données qui peuvent être lues ou écrites, le bloc d'instructions correspondant est exécuté ; sinon, le canal est ignoré et la clause de communication suivante est exécutée ; Si aucune donnée n'est lisible ou inscriptible sur aucun canal, le bloc d'instruction suivant la valeur par défaut est exécuté.

Ce qui suit est un exemple d'instruction select :

package main

import "fmt"

func fibonacci(c, quit chan int) {
    x, y := 0, 1
    for {
        select {
        case c <- x:
            x, y = y, x+y
        case <-quit:
            fmt.Println("quit")
            return
        }
    }
}

func main() {
    c := make(chan int)
    quit := make(chan int)
    go func() {
        for i := 0; i < 10; i++ {
            fmt.Println(<-c)
        }
        quit <- 0
    }()
    fibonacci(c, quit)
}
Copier après la connexion

Résultat de sortie :

0
1
1
2
3
5
8
13
21
34
quit
Copier après la connexion

Instruction de boucle

Les instructions de boucle dans Golang incluent des instructions for et des instructions range.

  1. instruction for

l'instruction for est utilisée pour exécuter un morceau de code dans une boucle. La syntaxe est la suivante :

for init; condition; post {
    statement(s);
}
Copier après la connexion

Parmi eux, init est utilisé pour démarrer la boucle, la condition est utilisée pour déterminer si la boucle. continue et post est utilisé pour contrôler le fonctionnement des variables de boucle.

Ce qui suit est un exemple d'instruction for :

package main

import "fmt"

func main() {
    var b int = 15
    var a int

    for i := 0; i < 10; i++ {
        fmt.Printf("i 的值为: %d
", i)
    }

    for a < b {
        a++
        fmt.Printf("a 的值为: %d
", a)
    }
}
Copier après la connexion

Résultat de sortie :

i 的值为: 0
i 的值为: 1
i 的值为: 2
i 的值为: 3
i 的值为: 4
i 的值为: 5
i 的值为: 6
i 的值为: 7
i 的值为: 8
i 的值为: 9
a 的值为: 1
a 的值为: 2
a 的值为: 3
a 的值为: 4
a 的值为: 5
a 的值为: 6
a 的值为: 7
a 的值为: 8
a 的值为: 9
a 的值为: 10
a 的值为: 11
a 的值为: 12
a 的值为: 13
a 的值为: 14
a 的值为: 15
Copier après la connexion
  1. instruction range

L'instruction range est utilisée pour parcourir les éléments d'un tableau, d'une tranche, d'un canal ou d'une carte. La syntaxe est la suivante. comme suit :

for key, value := range oldMap {
    newMap[key] = value
}
Copier après la connexion

où, key et value représentent respectivement la clé et la valeur de l'élément actuel.

Ce qui suit est un exemple d'instruction de plage :

package main

import "fmt"

func main() {
    nums := []int{2, 3, 4}
    sum := 0
    for _, num := range nums {
        sum += num
    }
    fmt.Println("sum:", sum)

    for i, num := range nums {
        if num == 3 {
            fmt.Println("index:", i)
        }
    }

    kvs := map[string]string{"a": "apple", "b": "banana"}
    for k, v := range kvs {
        fmt.Printf("%s -> %s
", k, v)
    }
}
Copier après la connexion

Résultat de sortie :

sum: 9
index: 1
a -> apple
b -> banana
Copier après la connexion

Instruction Jump

Les instructions Jump en Golang incluent break, continue et goto.

  1. instruction break

instruction break est utilisée pour interrompre le corps de la boucle, la syntaxe est la suivante :

for i := 0; i < 10; i++ {
    if i == 5 {
        break
    }
    fmt.Printf("%d ", i)
}
fmt.Println()
Copier après la connexion

Résultat de sortie :

0 1 2 3 4
Copier après la connexion
  1. instruction continue

instruction continue est utilisée pour interrompre cette itération du courant corps de la boucle, la syntaxe est la suivante :

for i := 0; i < 10; i++ {
    if i == 5 {
        continue
    }
    fmt.Printf("%d ", i)
}
fmt.Println()
Copier après la connexion

Résultat de sortie :

0 1 2 3 4 6 7 8 9
Copier après la connexion
  1. instruction goto

l'instruction goto est utilisée pour accéder sans condition à une certaine étiquette de code (étiquette) pour l'exécution. La syntaxe est la suivante :

goto label;
...
label: statement
Copier après la connexion
.

où l'étiquette est un identifiant et l'instruction est une instruction d'exécution.

Ce qui suit est un exemple d'instruction goto :

package main

import "fmt"

func main() {
    i := 0
Again:
    fmt.Printf("循环执行次数:%d
", i)
    i++
    if i < 10 {
        goto Again
    }
}
Copier après la connexion

Résultat de sortie :

循环执行次数:0
循环执行次数:1
循环执行次数:2
循环执行次数:3
循环执行次数:4
循环执行次数:5
循环执行次数:6
循环执行次数:7
循环执行次数:8
循环执行次数:9
Copier après la connexion

Résumé

Les structures de contrôle de flux dans Golang incluent des instructions conditionnelles, des instructions de boucle et des instructions de saut. Les instructions conditionnelles incluent les instructions if, switch et select, qui sont utilisées pour effectuer des jugements sur une ou plusieurs conditions. Les instructions de boucle incluent les instructions for et range, qui sont utilisées pour parcourir un morceau de code ou parcourir un élément. Les instructions de saut incluent les instructions break, continue et goto, qui sont utilisées pour interrompre la boucle en cours ou accéder sans condition à une étiquette pour exécution. Dans la programmation réelle, il est nécessaire de sélectionner de manière flexible la structure de contrôle de processus appropriée en fonction des besoins de mise en œuvre de la logique du code.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

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 !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Quelles sont les vulnérabilités de Debian OpenSSL Quelles sont les vulnérabilités de Debian OpenSSL Apr 02, 2025 am 07:30 AM

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.

Quel est le problème avec le fil de file d'attente dans GO's Crawler Colly? Quel est le problème avec le fil de file d'attente dans GO's Crawler Colly? Apr 02, 2025 pm 02:09 PM

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

Quelles bibliothèques sont utilisées pour les opérations du numéro de point flottantes en Go? Quelles bibliothèques sont utilisées pour les opérations du numéro de point flottantes en Go? Apr 02, 2025 pm 02:06 PM

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

Transformant du développement frontal au développement back-end, est-il plus prometteur d'apprendre Java ou Golang? Transformant du développement frontal au développement back-end, est-il plus prometteur d'apprendre Java ou Golang? Apr 02, 2025 am 09:12 AM

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

Méthode de surveillance postgresql sous Debian Méthode de surveillance postgresql sous Debian Apr 02, 2025 am 07:27 AM

Cet article présente une variété de méthodes et d'outils pour surveiller les bases de données PostgreSQL sous le système Debian, vous aidant à saisir pleinement la surveillance des performances de la base de données. 1. Utilisez PostgreSQL pour reprendre la surveillance Afficher PostgreSQL lui-même offre plusieurs vues pour surveiller les activités de la base de données: PG_STAT_ACTIVITY: affiche les activités de la base de données en temps réel, y compris les connexions, les requêtes, les transactions et autres informations. PG_STAT_REPLIcation: surveille l'état de réplication, en particulier adapté aux grappes de réplication de flux. PG_STAT_DATABASE: Fournit des statistiques de base de données, telles que la taille de la base de données, les temps de validation / recul des transactions et d'autres indicateurs clés. 2. Utilisez l'outil d'analyse de journaux pgbadg

Dans Go, pourquoi les chaînes d'impression avec println et string () ont-elles des effets différents? Dans Go, pourquoi les chaînes d'impression avec println et string () ont-elles des effets différents? Apr 02, 2025 pm 02:03 PM

La différence entre l'impression de chaîne dans le langage go: la différence dans l'effet de l'utilisation de fonctions println et string () est en Go ...

Comment résoudre le problème de conversion de type user_id lors de l'utilisation du flux redis pour implémenter les files d'attente de messages dans le langage Go? Comment résoudre le problème de conversion de type user_id lors de l'utilisation du flux redis pour implémenter les files d'attente de messages dans le langage Go? Apr 02, 2025 pm 04:54 PM

Le problème de l'utilisation de Redessstream pour implémenter les files d'attente de messages dans le langage GO consiste à utiliser le langage GO et redis ...

Comment spécifier la base de données associée au modèle de Beego ORM? Comment spécifier la base de données associée au modèle de Beego ORM? Apr 02, 2025 pm 03:54 PM

Dans le cadre du cadre de beegoorm, comment spécifier la base de données associée au modèle? De nombreux projets Beego nécessitent que plusieurs bases de données soient opérées simultanément. Lorsque vous utilisez Beego ...

See all articles