Einführung
Beim Erstellen eines To-Do-Plan wird eine Aufgabe, wenn sie noch nicht abgeschlossen ist, zur To-Do-Liste hinzugefügt, und wenn sie abgeschlossen ist, wird sie in die Liste der abgeschlossenen Aufgaben verschoben.
In der Welt der Programmierung müssen wir auch die Richtung des Programms basierend auf verschiedenen Anforderungen ändern. Lassen Sie uns nun die if-Verzweigungsanweisung kennenlernen, die eine Flusssteuerungsanweisung ist.
Wissenspunkte:
if-Anweisungif-else-Anweisungelse-if-Anweisung- Formatierungsregeln
if-Anweisung
Die am häufigsten verwendete Verzweigungsanweisung ist die if-Anweisung, die prüft, ob eine voreingestellte Bedingung wahr ist, und dann entscheidet, ob der Codeblock ausgeführt wird. Hier ist ihr Format:
if condition {
code block
}
Wenn die Bedingung wahr ist, führt das Programm den Codeblock aus; andernfalls überspringt es den Codeblock.
Schauen wir uns ein praktisches Beispiel an. Erstellen Sie eine neue Datei namens if.go und schreiben Sie den folgenden Code hinein:
cd ~/project
touch if.go
package main
import (
"fmt"
)
func main() {
var num = 40
// Get the remainder of dividing two numbers using %
if num % 2 == 0 {
fmt.Println(num, "is even")
}
}
Führen Sie das Programm aus:
go run if.go
Das Ergebnis ist wie folgt:
40 is even
In diesem Programm deklarieren wir zuerst eine Ganzzahlvariable num. Dann verwenden wir in der if-Anweisung den Modulo-Operator %, um den Rest der Division von num durch 2 zu erhalten, und den Gleichheitsoperator ==, um zu prüfen, ob der Rest gleich 0 ist. Wenn dies der Fall ist, wird der Codeblock ausgeführt und es wird ausgegeben, dass die Zahl gerade ist.
if else-Anweisung
Was sollen wir tun, wenn wir etwas anderes ausgeben möchten, wenn die Bedingung in der if-Anweisung nicht erfüllt ist? In diesem Fall können wir die if else-Anweisung verwenden. Wenn die Bedingung in der if-Anweisung wahr ist, wird der Codeblock in der if-Anweisung ausgeführt; andernfalls wird der Codeblock in der else-Anweisung ausgeführt.
Das Format der if else-Anweisung ähnelt der if-Anweisung:
if condition {
code
} else {
code
}
Schauen wir uns ein Beispiel an. Das folgende Programm gibt aus, ob heute ein Wochentag oder ein Wochenende ist:
cd ~/project
touch if_else.go
package main
import (
"fmt"
"time"
)
func main() {
// Get the current time
t := time.Now()
// Check whether it is Saturday or Sunday
if t.Weekday() == time.Saturday || t.Weekday() == time.Sunday {
fmt.Println("Today is:", t.Weekday(), "weekend")
} else {
fmt.Println("Today is:", t.Weekday(), "weekday")
}
}
Führen Sie das Programm aus:
go run if_else.go
Das Ergebnis ist wie folgt:
Today is: Monday weekday
Wir verwenden das time-Paket aus der Standardbibliothek, um die aktuelle Zeit zu erhalten. Dann vergleichen wir sie mit Samstag und Sonntag. Wenn es ein Wochenende ist, wird der Codeblock in der if-Anweisung ausgeführt; andernfalls wird der Codeblock in der else-Anweisung ausgeführt.
else if-Anweisung
Neben der Prüfung einer einzelnen Bedingung können wir auch die else if-Anweisung verwenden, um mehrere Bedingungen zu prüfen.
Ihr Format ist wie folgt:
if condition {
code
} else if condition {
code
} else {
code
}
In einer Verzweigungsanweisung können Sie mehrere else if-Anweisungen haben, aber nur eine if- und eine else-Anweisung. Die else if-Anweisung sollte zwischen der if- und der else-Anweisung positioniert werden.
Lassen Sie uns das Programm im Abschnitt "if else" umschreiben, um den Wochentag auszugeben:
Aktualisieren Sie die Datei if_else.go:
package main
import (
"fmt"
"time"
)
func main() {
today := time.Now().Weekday()
if today == time.Monday {
fmt.Println("Today is Monday")
} else if today == time.Tuesday {
fmt.Println("Today is Tuesday")
} else if today == time.Wednesday {
fmt.Println("Today is Wednesday")
} else if today == time.Thursday {
fmt.Println("Today is Thursday")
} else if today == time.Friday {
fmt.Println("Today is Friday")
} else if today == time.Saturday {
fmt.Println("Today is Saturday")
} else {
fmt.Println("Today is Sunday")
}
}
Führen Sie das Programm aus:
go run if_else.go
Nach dem Ausführen ist das Ergebnis wie folgt:
Today is Monday
In dem vorherigen Programm verwenden wir zuerst time.Now(), um die aktuelle Zeit zu erhalten, und dann den Wochentag aus der aktuellen Zeit zu extrahieren. In diesem Programm werden diese beiden Codezeilen zu einer Zeile zusammengefasst. Nachdem der Wochentag ermittelt wurde, wird er mit der Verzweigungsanweisung abgeglichen, um den Wochentag auszugeben.
Initialisierungsanweisung in der if-Anweisung
Bei unserem vorherigen Lernprozess hatte die if-Anweisung nur einen Parameter, nämlich die Bedingung:
if condition {
code
}
Der vollständige Parameter umfasst auch eine Initialisierungsanweisung, die in Go ein optionaler Parameter ist. Sie wird typischerweise zur Deklaration und Initialisierung temporärer Variablen verwendet. Die Initialisierungsanweisung wird bei der Verwendung durch ein Semikolon getrennt. Die Syntax ist wie folgt:
if initialization statement; condition {
code
}
Wir haben das Programm aus dem Abschnitt "if else" umgeschrieben. Wir haben die Variablendeklaration als Initialisierungsanweisung in die if-Anweisung verschoben, um den Code zu verkürzen:
package main
import (
"fmt"
"time"
)
func main() {
if t := time.Now(); t.Weekday() == time.Saturday || t.Weekday() == time.Sunday {
fmt.Println("Today is:", t.Weekday(), "weekend, studying and recharging")
} else {
fmt.Println("Today is:", t.Weekday(), "also studying hard")
}
}
Führen Sie das Programm aus:
go run if_else.go
Man kann sehen, dass es korrekt läuft:
Today is: Monday also studying hard
Hinweis: Der Gültigkeitsbereich der in der Initialisierungsanweisung deklarierten Variablen ist nur innerhalb des if-Blocks.
Formatierungsprobleme
Ich weiß nicht, ob ihr Go-Entwickler bei der Lernphase der if-Anweisungen die Formatierungsanforderungen von Go bemerkt habt.
- In Go müssen die Schlüsselwörter
if,elseundelse ifin derselben Zeile wie die rechte geschweifte Klammer}stehen. - Die Schlüsselwörter
else ifundelsemüssen ebenfalls in derselben Zeile wie die vorherige linke geschweifte Klammer stehen, andernfalls meldet der Compiler einen Syntaxfehler zur Kompilierzeit.
Wenn wir das Programm ausführen, nachdem wir die else-Anweisung in die nächste Zeile verschoben haben, meldet der Compiler einen Syntaxfehler.
Zusammenfassung
In diesem Lab haben wir die if-Verzweigungsanweisung erklärt, einschließlich der folgenden Hauptpunkte:
- In einem
if-Verzweigungscodeblock können mehrereelse if-Anweisungen vorhanden sein, aber es kann nur eineif- und eineelse-Anweisung geben. - Die
else if-Anweisung muss zwischen derif- und derelse-Anweisung platziert werden. - Sie können eine Initialisierungsanweisung in der
if-Anweisung verwenden, um den Code zu verkürzen. - Der Compiler verlangt, dass die Schlüsselwörter
if,elseundelse ifin derselben Zeile wie die geschweiften Klammern stehen müssen.



