Heim Backend-Entwicklung Golang Golang-Prozesssteuerung

Golang-Prozesssteuerung

May 13, 2023 am 11:12 AM

Golang ist eine effiziente und moderne Programmiersprache, die umfangreiche Funktionen zur Prozesssteuerung bietet. In diesem Artikel werden die Flusskontrollstrukturen in Golang untersucht, einschließlich bedingter Anweisungen, Schleifenanweisungen und Sprunganweisungen, um den Lesern zu helfen, diese Strukturen besser zu verstehen und anzuwenden.

Bedingte Anweisungen

Bedingte Anweisungen in Golang umfassen if-Anweisungen, switch-Anweisungen und select-Anweisungen.

  1. if-Anweisung

if-Anweisung wird verwendet, um bedingte Urteile zu fällen. Die Syntax lautet wie folgt:

if condition {
    statement(s)
} else if condition {
    statement(s)
} else {
    statement(s)
}
Nach dem Login kopieren

wobei Bedingung ein bedingter Ausdruck ist, der zur Beurteilung von wahr oder falsch verwendet wird. Wenn die Bedingung erfüllt ist, wird der folgende Anweisungsblock ausgeführt, andernfalls wird der Anweisungsblock übersprungen und die nächste Anweisung ausgeführt.

Wenn auf die Bedingung das Schlüsselwort else if folgt, wird jeder bedingte Ausdruck der Reihe nach ausgewertet und der erste Anweisungsblock, der wahr ist, wird ausgeführt. Wenn alle bedingten Ausdrücke falsch sind, wird der auf else folgende Anweisungsblock ausgeführt. Ohne den else-Block wird keine Anweisung ausgeführt, wenn die Bedingung falsch ist.

Das Folgende ist ein Beispiel für eine if-Anweisung:

package main

import "fmt"

func main() {
    var a int = 10
    if a < 20 {
        fmt.Printf("a 小于 20
")
    }
    fmt.Printf("a 的值为 : %d
", a)
}
Nach dem Login kopieren

Ausgabeergebnis:

a 小于 20
a 的值为 : 10
Nach dem Login kopieren
  1. switch-Anweisung

switch-Anweisung wird für die Beurteilung mehrerer Bedingungen verwendet. Die Syntax lautet wie folgt:

switch expression {
    case value1:
        statement(s)
    case value2:
        statement(s)
    case value3:
        statement(s)
    default:
        statement(s)
}
Nach dem Login kopieren

Wo ist der Ausdruck? ein Ausdruck, der zum Abgleichen einer Konstante oder Variablen in einer Case-Klausel verwendet wird. Wenn die Übereinstimmung erfolgreich ist, wird der entsprechende Anweisungsblock ausgeführt. Andernfalls wird der Anweisungsblock übersprungen und die nächste Case-Klausel (falls vorhanden) ausgeführt.

Wenn nicht alle Case-Klauseln erfolgreich abgeglichen werden, wird der Anweisungsblock nach der Standardeinstellung ausgeführt. Wenn keine Standardklausel vorhanden ist, werden keine Anweisungen ausgeführt.

Das Folgende ist ein Beispiel für eine Switch-Anweisung:

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 )
}
Nach dem Login kopieren

Ausgabeergebnis:

良好!
你的等级是 B
Nach dem Login kopieren
  1. select-Anweisung

select-Anweisung wird verwendet, um mehrere Kanäle gleichzeitig zu überwachen:

select {
    case communication clause 1:
        statement(s)
    case communication clause 2:
        statement(s)
    .............
    default:
        statement(s)
}
Nach dem Login kopieren

Among In ihnen bezieht sich die Kommunikationsklausel auf einen Kanal oder eine Kanaloperation mit Richtung, einschließlich Sendeoperation und Empfangsoperation. Wenn ein Kanal Daten hat, die gelesen oder geschrieben werden können, wird der entsprechende Anweisungsblock ausgeführt; andernfalls wird der Kanal übersprungen und die nächste Kommunikationsklausel ausgeführt. Wenn auf keinem Kanal Daten lesbar oder beschreibbar sind, wird der dem Standard folgende Anweisungsblock ausgeführt.

Das Folgende ist ein Beispiel für eine Select-Anweisung:

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)
}
Nach dem Login kopieren

Ausgabeergebnis:

0
1
1
2
3
5
8
13
21
34
quit
Nach dem Login kopieren

Loop-Anweisung

Loop-Anweisungen in Golang umfassen for-Anweisungen und Range-Anweisungen.

  1. for-Anweisung

for-Anweisung wird verwendet, um einen Codeabschnitt in einer Schleife auszuführen. Die Syntax lautet wie folgt:

for init; condition; post {
    statement(s);
}
Nach dem Login kopieren

Dabei wird init zum Starten der Schleife verwendet, und die Bedingung wird verwendet, um zu bestimmen, ob die Schleife ausgeführt wird wird fortgesetzt und Post wird verwendet, um den Betrieb von Schleifenvariablen zu steuern.

Das Folgende ist ein Beispiel für eine for-Anweisung:

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)
    }
}
Nach dem Login kopieren

Ausgabeergebnis:

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
Nach dem Login kopieren
  1. range-Anweisung

Die range-Anweisung wird verwendet, um über die Elemente eines Arrays, Slice, Kanals oder einer Karte zu iterieren. Die Syntax ist wie folgt:

for key, value := range oldMap {
    newMap[key] = value
}
Nach dem Login kopieren

wobei „key“ und „value“ den Schlüssel bzw. den Wert des aktuellen Elements darstellen.

Das Folgende ist ein Beispiel für eine Bereichsanweisung:

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)
    }
}
Nach dem Login kopieren

Ausgabeergebnis:

sum: 9
index: 1
a -> apple
b -> banana
Nach dem Login kopieren

Jump-Anweisung

Jump-Anweisungen in Golang umfassen break, continue und goto.

  1. break-Anweisung

break-Anweisung wird verwendet, um den Schleifenkörper zu unterbrechen. Die Syntax lautet wie folgt:

for i := 0; i < 10; i++ {
    if i == 5 {
        break
    }
    fmt.Printf("%d ", i)
}
fmt.Println()
Nach dem Login kopieren

Ausgabeergebnis:

0 1 2 3 4
Nach dem Login kopieren
  1. continue-Anweisung

continue-Anweisung wird verwendet, um diese Iteration des Stroms zu unterbrechen Schleifenkörper, die Syntax lautet wie folgt:

for i := 0; i < 10; i++ {
    if i == 5 {
        continue
    }
    fmt.Printf("%d ", i)
}
fmt.Println()
Nach dem Login kopieren

Ausgabeergebnis:

0 1 2 3 4 6 7 8 9
Nach dem Login kopieren
  1. goto-Anweisung

goto-Anweisung wird verwendet, um zur Ausführung bedingungslos zu einem bestimmten Codelabel (Label) zu springen

wobei label ein Bezeichner und Anweisung eine Ausführungsanweisung ist.

Das Folgende ist ein Beispiel für eine goto-Anweisung:

goto label;
...
label: statement
Nach dem Login kopieren

Ausgabeergebnis:

package main

import "fmt"

func main() {
    i := 0
Again:
    fmt.Printf("循环执行次数:%d
", i)
    i++
    if i < 10 {
        goto Again
    }
}
Nach dem Login kopieren
Zusammenfassung

Flusskontrollstrukturen in Golang umfassen bedingte Anweisungen, Schleifenanweisungen und Sprunganweisungen. Zu den bedingten Anweisungen gehören if-, switch- und select-Anweisungen, die zur Beurteilung einzelner oder mehrerer Bedingungen verwendet werden. Zu den Schleifenanweisungen gehören for- und range-Anweisungen, die zum Durchlaufen eines Codeabschnitts oder zum Durchlaufen eines Elements verwendet werden. Zu den Sprunganweisungen gehören Break-, Continue- und Goto-Anweisungen, die zum Unterbrechen der aktuellen Schleife oder zum bedingungslosen Springen zu einer Marke zur Ausführung verwendet werden. Bei der tatsächlichen Programmierung ist es erforderlich, die geeignete Prozesssteuerungsstruktur entsprechend den Anforderungen zur Implementierung der Codelogik flexibel auszuwählen.

Das obige ist der detaillierte Inhalt vonGolang-Prozesssteuerung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was sind die Schwachstellen von Debian Openensl Was sind die Schwachstellen von Debian Openensl Apr 02, 2025 am 07:30 AM

OpenSSL bietet als Open -Source -Bibliothek, die in der sicheren Kommunikation weit verbreitet sind, Verschlüsselungsalgorithmen, Tasten und Zertifikatverwaltungsfunktionen. In seiner historischen Version sind jedoch einige Sicherheitslücken bekannt, von denen einige äußerst schädlich sind. Dieser Artikel konzentriert sich auf gemeinsame Schwachstellen und Antwortmaßnahmen für OpenSSL in Debian -Systemen. DebianopensL Bekannte Schwachstellen: OpenSSL hat mehrere schwerwiegende Schwachstellen erlebt, wie z. Ein Angreifer kann diese Sicherheitsanfälligkeit für nicht autorisierte Lesen sensibler Informationen auf dem Server verwenden, einschließlich Verschlüsselungsschlüssel usw.

Was ist das Problem mit Warteschlangen -Thread in Go's Crawler Colly? Was ist das Problem mit Warteschlangen -Thread in Go's Crawler Colly? Apr 02, 2025 pm 02:09 PM

Das Problem der Warteschlange Threading In Go Crawler Colly untersucht das Problem der Verwendung der Colly Crawler Library in Go -Sprache. Entwickler stoßen häufig auf Probleme mit Threads und Anfordern von Warteschlangen. � ...

Welche Bibliotheken werden für die Operationen der schwimmenden Punktzahl in Go verwendet? Welche Bibliotheken werden für die Operationen der schwimmenden Punktzahl in Go verwendet? Apr 02, 2025 pm 02:06 PM

In der Bibliothek, die für den Betrieb der Schwimmpunktnummer in der GO-Sprache verwendet wird, wird die Genauigkeit sichergestellt, wie die Genauigkeit ...

Ist es vielversprechender, Java oder Golang von Front-End zu Back-End-Entwicklung zu verwandeln? Ist es vielversprechender, Java oder Golang von Front-End zu Back-End-Entwicklung zu verwandeln? Apr 02, 2025 am 09:12 AM

Backend Learning Path: Die Erkundungsreise von Front-End zu Back-End als Back-End-Anfänger, der sich von der Front-End-Entwicklung verwandelt, Sie haben bereits die Grundlage von Nodejs, ...

PostgreSQL -Überwachungsmethode unter Debian PostgreSQL -Überwachungsmethode unter Debian Apr 02, 2025 am 07:27 AM

In diesem Artikel werden eine Vielzahl von Methoden und Tools eingeführt, um PostgreSQL -Datenbanken im Debian -System zu überwachen, um die Datenbankleistung vollständig zu erfassen. 1. verwenden Sie PostgreSQL, um die Überwachungsansicht zu erstellen. PostgreSQL selbst bietet mehrere Ansichten für die Überwachung von Datenbankaktivitäten: PG_STAT_ACTIVITY: Zeigt Datenbankaktivitäten in Echtzeit an, einschließlich Verbindungen, Abfragen, Transaktionen und anderen Informationen. PG_STAT_REPLIKATION: Monitore Replikationsstatus, insbesondere für Stream -Replikationscluster. PG_STAT_DATABASE: Bietet Datenbankstatistiken wie Datenbankgröße, Transaktionsausschüsse/Rollback -Zeiten und andere Schlüsselindikatoren. 2. Verwenden Sie das Log -Analyse -Tool PGBADG

Warum hat das Drucken von Saiten mit Println und String () -Funktionen unterschiedliche Effekte? Warum hat das Drucken von Saiten mit Println und String () -Funktionen unterschiedliche Effekte? Apr 02, 2025 pm 02:03 PM

Der Unterschied zwischen Stringdruck in GO -Sprache: Der Unterschied in der Wirkung der Verwendung von Println und String () ist in Go ...

Wie löste ich das Problem des Typs des user_id -Typs bei der Verwendung von Redis -Stream, um Nachrichtenwarteschlangen in GO -Sprache zu implementieren? Wie löste ich das Problem des Typs des user_id -Typs bei der Verwendung von Redis -Stream, um Nachrichtenwarteschlangen in GO -Sprache zu implementieren? Apr 02, 2025 pm 04:54 PM

Das Problem der Verwendung von RETISTREAM zur Implementierung von Nachrichtenwarteschlangen in der GO -Sprache besteht darin, die Go -Sprache und Redis zu verwenden ...

Wie gibt ich die mit dem Modell in Beego Orm zugeordnete Datenbank an? Wie gibt ich die mit dem Modell in Beego Orm zugeordnete Datenbank an? Apr 02, 2025 pm 03:54 PM

Wie kann man im Beegoorm -Framework die mit dem Modell zugeordnete Datenbank angeben? In vielen BeEGO -Projekten müssen mehrere Datenbanken gleichzeitig betrieben werden. Bei Verwendung von BeEGO ...

See all articles