Inhaltsverzeichnis
2、循环语句" >2、循环语句
2.1 循环处理语句" >2.1 循环处理语句
Wenn eine Kommunikation in Ordnung ist, wird sie einfach ausgeführt, die anderen werden ignoriert Wenn mehrere Fälle ausgeführt werden können, wählt „select“ zufällig einen aus, der ausgeführt werden soll. " >Alle Kanalausdrücke werden ausgewertet, alle gesendeten Ausdrücke werden ausgewertetWenn eine Kommunikation in Ordnung ist, wird sie einfach ausgeführt, die anderen werden ignoriert Wenn mehrere Fälle ausgeführt werden können, wählt „select“ zufällig einen aus, der ausgeführt werden soll.
Heim Backend-Entwicklung Golang Was sind die Golang-Flusskontrollanweisungen?

Was sind die Golang-Flusskontrollanweisungen?

Dec 28, 2022 pm 05:58 PM
golang go语言 流程控制

Flusskontrollanweisung: 1. if-Anweisung, bestehend aus einem booleschen Ausdruck, gefolgt von einer oder mehreren Anweisungen; 2. „if...else“-Anweisung, der Ausdruck in else wird ausgeführt, wenn der boolesche Ausdruck falsch ist; switch-Anweisung, die zum Ausführen verschiedener Aktionen basierend auf unterschiedlichen Bedingungen verwendet wird; 5. for-Schleifenanweisung, Syntax „for k,v := range oldmap{newmap[k]=v}“; , weiter, gehe zu.

Was sind die Golang-Flusskontrollanweisungen?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, GO Version 1.18, Dell G3-Computer.

Werfen wir einen Blick auf den grundlegenden Inhalt von Golang-Flusskontrollanweisungen.

1. Die bedingte Verzweigungsanweisung

ähnelt der C-Sprache. Die zugehörigen bedingten Anweisungen sind in der folgenden Tabelle aufgeführt:

if-Anweisung if…else-Anweisung switch-Anweisung select-Anweisung
Anweisung Beschreibung
if-Anweisung besteht aus einem booleschen A-Ausdruck, gefolgt von einer oder mehreren Anweisungen.
if-Anweisung kann von einer optionalen else-Anweisung gefolgt werden. Der Ausdruck in der else-Anweisung wird ausgeführt, wenn der boolesche Ausdruck falsch ist.
switch-Anweisung wird verwendet, um verschiedene Aktionen basierend auf unterschiedlichen Bedingungen auszuführen.
Die select-Anweisung ähnelt der switch-Anweisung, aber select führt zufällig einen ausführbaren Fall aus. Wenn kein Fall zum Ausführen vorhanden ist, wird es blockiert, bis ein Fall zum Ausführen vorhanden ist.
if-Anweisung
    Die Syntax lautet wie folgt:

  • if 布尔表达式 {
       /* 在布尔表达式为 true 时执行 */
    }
    Nach dem Login kopieren
if-else-Anweisung
  • if 布尔表达式 {
       /* 在布尔表达式为 true 时执行 */
    } else {
    	/* 在布尔表达式为 false 时执行 */
    }
    Nach dem Login kopieren
switch-Anweisung
    Die darin enthaltenen Variablen<span class ="hljs- attribute">v</span> kann von jedem beliebigen Typ sein, val1 und val2 Es kann sich um einen beliebigen Wert desselben Typs handeln, der Typ ist nicht auf Konstanten oder Ganzzahlen beschränkt, oder das Endergebnis ist ein Ausdruck desselben Typs.

  • switch v {
        case val1:
            ...
        case val2:
            ...
        default:
            ...
    }
    Nach dem Login kopieren
    <span class="hljs-attribute">v</span>可以是任何类型,val1val2可以是同类型的任意值,类型不局限为常量或者整数,或者最终结果为相同类型的表达式。
select {
    case communication clause  :
       statement(s);      
    case communication clause  :
       statement(s);
    /* 你可以定义任意数量的 case */
    default : /* 可选 */
       statement(s);
}
Nach dem Login kopieren
  • select语句
    select 是 Go 中的一个控制结构,类似于用于通信的 switch 语句。每个 case 必须是一个通信操作,要么是发送要么是接收。它将会随机执行一个可运行的 case。如果没有 case 可运行,它将阻塞,直到有 case 可运行。一个默认的子句应该总是可运行的。
for key, value := range oldmap {
	newmap[key] = value
}
Nach dem Login kopieren

注意:

  • 每个case必须都是一个通信
  • 所有channel表达式都会被求值,所有被发送的表达式都会被求值
  • 如果任意某一个通信都可以,它就执行,其他就忽略
  • 如果有多个case都可以运行,select就会随机挑选一个来执行。
  • 如果没有一个case可以被运行:如果有default子句,就执行default子句,select将被阻塞,直到某个通信可以运行,从而避免饥饿问题。

2、循环语句

2.1 循环处理语句

与多数语言不同的是,Go语言中的循环语句只支持 for 关键字,而不支持 while 和 do-while 结构,关键字 for 的基本使用方法与C语言和 C++ 中非常接近。

go中时使用for实现循环的,共有三种形式:

select-Anweisung
a := 0
for a<5 {
	fmt.Printf("%d\n", a)
	a++
	if a==2 {
		break;
	}
}
/* output
0
1
2
*/
Nach dem Login kopieren
Nach dem Login kopieren

语法
和c语言中的for相同for init; condition; post {}
和c语言中的while相同for condition{}
和c语言中的<span class="hljs-function"><span class="hljs-title">for</span><span class="hljs-params">(;;)</span></span> select ist eine Kontrollstruktur in Go, ähnlich einer Switch-Anweisung, die für die Kommunikation verwendet wird. Bei jedem Fall muss es sich um einen „Kommunikationsvorgang“ handeln, entweder Senden oder Empfangen. Es wird zufällig ein ausführbarer Fall ausgeführt. Wenn kein Fall zum Ausführen vorhanden ist, wird es blockiert, bis ein Fall zum Ausführen vorhanden ist. Eine Standardklausel sollte immer ausführbar sein.
Hinweis:

Jeder Fall muss eine Kommunikation sein

Alle Kanalausdrücke werden ausgewertet, alle gesendeten Ausdrücke werden ausgewertetWenn eine Kommunikation in Ordnung ist, wird sie einfach ausgeführt, die anderen werden ignoriert Wenn mehrere Fälle ausgeführt werden können, wählt „select“ zufällig einen aus, der ausgeführt werden soll.

Wenn kein Fall ausgeführt werden kann: Wenn eine Standardklausel vorhanden ist, wird die Standardklausel ausgeführt und die Auswahl wird blockiert, bis eine bestimmte Kommunikation ausgeführt werden kann, wodurch das Hungerproblem vermieden wird.

2.1 SchleifenverarbeitungsanweisungenIm Gegensatz zu den meisten Sprachen unterstützen Schleifenanweisungen in der Go-Sprache nur das for-Schlüsselwort und nicht die while- und do-while-Strukturen. Die grundlegende Verwendung des Schlüsselworts for kommt der in C-Sprache und C++ sehr nahe . Es gibt drei Formen der Verwendung von for-Schleifen in go: Syntax ist die gleiche wie für in C-Sprache for init; condition; post {}

2、 Schleifenanweisung
🎜 🎜🎜 ist dasselbe wie in C-Sprache 🎜🎜für Bedingung{}🎜🎜🎜🎜 und <span class="hljs-function"><span class=" hljs-title ">for</span><span class="hljs-params">(;;)</span></span>Gleiches 🎜🎜for{}🎜🎜🎜🎜🎜außer , die for-Schleife kann Verwenden Sie 🎜range🎜 auch direkt, um über Slices, Maps, Arrays und Strings usw. zu iterieren. Das Format ist wie folgt: 🎜
    // 不使用标记
    fmt.Println("---- continue ---- ")
    for i := 1; i <= 3; i++ {
        fmt.Printf("i: %d\n", i)
            for i2 := 11; i2 <= 13; i2++ {
                fmt.Printf("i2: %d\n", i2)
                continue
            }
    }

/* output
i: 1
i2: 11
i2: 12
i2: 13
i: 2
i2: 11
i2: 12
i2: 13
i: 3
i2: 11
i2: 12
i2: 13
*/

    // 使用标记
    fmt.Println("---- continue label ----")
    re:
        for i := 1; i <= 3; i++ {
            fmt.Printf("i: %d", i)
                for i2 := 11; i2 <= 13; i2++ {
                    fmt.Printf("i2: %d\n", i2)
                    continue re
                }
        }

/* output
i: 1
i2: 11
i: 2
i2: 11
i: 3
i2: 11
*/
Nach dem Login kopieren
Nach dem Login kopieren
🎜🎜🎜🎜2.2 Schleifenkontrollanweisung🎜🎜🎜🎜🎜🎜Steueranweisung🎜🎜ausführliche Erklärung🎜🎜 🎜 🎜🎜🎜break🎜🎜Unterbrechen Sie die Schleife oder wechseln Sie die Anweisung🎜🎜🎜🎜continue🎜🎜Überspringen Sie die verbleibenden Anweisungen der aktuellen Schleife und fahren Sie dann mit dem nächsten Zyklus fort🎜🎜🎜🎜goto-Anweisung🎜🎜Übertragen Sie die Steuerung an die markierte Aussage 🎜🎜🎜🎜

1、break

break主要用于循环语句跳出循环,和c语言中的使用方式是相同的。且在多重循环的时候还可以使用label标出想要break的循环。
实例代码如下:

a := 0
for a<5 {
	fmt.Printf("%d\n", a)
	a++
	if a==2 {
		break;
	}
}
/* output
0
1
2
*/
Nach dem Login kopieren
Nach dem Login kopieren

2、continue

Go 语言的 continue 语句 有点像 break 语句。但是 continue 不是跳出循环,而是跳过当前循环执行下一次循环语句。在多重循环中,可以用标号 label 标出想 continue 的循环。
实例代码如下:

    // 不使用标记
    fmt.Println("---- continue ---- ")
    for i := 1; i <= 3; i++ {
        fmt.Printf("i: %d\n", i)
            for i2 := 11; i2 <= 13; i2++ {
                fmt.Printf("i2: %d\n", i2)
                continue
            }
    }

/* output
i: 1
i2: 11
i2: 12
i2: 13
i: 2
i2: 11
i2: 12
i2: 13
i: 3
i2: 11
i2: 12
i2: 13
*/

    // 使用标记
    fmt.Println("---- continue label ----")
    re:
        for i := 1; i <= 3; i++ {
            fmt.Printf("i: %d", i)
                for i2 := 11; i2 <= 13; i2++ {
                    fmt.Printf("i2: %d\n", i2)
                    continue re
                }
        }

/* output
i: 1
i2: 11
i: 2
i2: 11
i: 3
i2: 11
*/
Nach dem Login kopieren
Nach dem Login kopieren

3、goto

goto语句主要是无条件转移到过程中指定的行。goto语句通常和条件语句配合使用,可用来实现条件转移、构成循环以及跳出循环体等功能。但是并不主张使用goto语句,以免造成程序流程混乱。
示例代码如下:

var a int = 0
LOOP: for a<5 {
	if a == 2 {
		a = a+1
		goto LOOP
	}
	fmt.Printf("%d\n", a)
	a++
}

/*
output:
0
1
2
3
4
*/
Nach dem Login kopieren

以上代码中的LOOP就是一个标签,当运行到goto语句的时候,此时执行流就会跳转到LOOP标志的哪一行上。

【相关推荐:Go视频教程编程教学

Das obige ist der detaillierte Inhalt vonWas sind die Golang-Flusskontrollanweisungen?. 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

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

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)

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

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 in GO werden von großen Unternehmen entwickelt oder von bekannten Open-Source-Projekten bereitgestellt? Welche Bibliotheken in GO werden von großen Unternehmen entwickelt oder von bekannten Open-Source-Projekten bereitgestellt? Apr 02, 2025 pm 04:12 PM

Welche Bibliotheken in GO werden von großen Unternehmen oder bekannten Open-Source-Projekten entwickelt? Bei der Programmierung in Go begegnen Entwickler häufig auf einige häufige Bedürfnisse, ...

Wie kann sichergestellt werden, dass die Parallelität beim Schreiben von Multi-Process-Protokollen sicher und effizient ist? Wie kann sichergestellt werden, dass die Parallelität beim Schreiben von Multi-Process-Protokollen sicher und effizient ist? Apr 02, 2025 pm 03:51 PM

Effizient behandeln Probleme mit der Parallelitätssicherheit beim Schreiben von Multi-Process-Protokoll. Mehrere Prozesse schreiben gleichzeitig die gleiche Protokolldatei. Wie kann die Parallelität sicher und effizient sichergestellt werden? Das ist ein ...

Was ist der Unterschied zwischen 'var' und 'Typ' Typenwort Definition in der GO -Sprache? Was ist der Unterschied zwischen 'var' und 'Typ' Typenwort Definition in der GO -Sprache? Apr 02, 2025 pm 12:57 PM

Zwei Möglichkeiten, Strukturen in der GO -Sprache zu definieren: Der Unterschied zwischen VAR- und Typ -Schlüsselwörtern. Bei der Definition von Strukturen sieht die Sprache oft zwei verschiedene Schreibweisen: Erstens ...

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

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 kann ich das Problem der Einschränkungen des generischen Funktionstyps der Golang -Funktionstypen lösen, die automatisch in VSCODE gelöscht werden? Wie kann ich das Problem der Einschränkungen des generischen Funktionstyps der Golang -Funktionstypen lösen, die automatisch in VSCODE gelöscht werden? Apr 02, 2025 pm 02:15 PM

Automatische Löschung von Golang Generic -Funktionstypeinschränkungen in VSCODE -Benutzern kann auf ein seltsames Problem beim Schreiben von Golang -Code mit VSCODE stoßen. Wann...

See all articles