Lektionen des Moduls (1/5)
if, else und Initialisierung
In Go ist die if-Syntax die klassische, weist jedoch zwei wichtige Unterschiede auf
im Vergleich zu C/Java: keine Klammern um die Bedingung und die
Möglichkeit, eine temporäre Variable direkt im if zu deklarieren
(die init-Anweisung).
Grundlegende Syntax
if temperatura > 30 {
fmt.Println("caldo")
} else if temperatura > 20 {
fmt.Println("mite")
} else {
fmt.Println("fresco")
}Klammern sind obligatorisch, auch bei einzeiligen Blöcken. Die
Bedingung muss vom Typ bool sein: keine „Wahrheit“ wie Python oder JS.
n := 0
// if n { ... } // ERRORE: int non è bool
if n != 0 { ... } // okInit-Anweisung: Gültigkeitsbereich auf if beschränkt
Sie können eine Variable nur innerhalb von if/else als gültig deklarieren.
Trennung von der Bedingung mit ;:
if v, err := call(); err == nil {
fmt.Println("ok", v)
} else {
fmt.Println("ko", err)
}
// qui v ed err NON esistono piùEs ist das idiomatische Muster für den Umgang mit Fehlern, ohne den äußeren Rahmen zu verunreinigen.
Shadowing im if-Bereich
Wenn eine äußere Variable vom Init "beschattet" wird, innerhalb wenn die lokale Version gewinnt. Gleich danach kommt der äußere wieder zum Vorschein.
x := 10
if x := 3; x > 5 {
fmt.Println("dentro:", x) // mai stampato (3 < 5)
} else {
fmt.Println("else:", x) // 3
}
fmt.Println("dopo:", x) // 10 — quella esternaKein ternärer Operator
Go hat keinen cond ? a : b. Für bedingte Zuweisungen benötigen Sie einen if/else
in 3-4 Zeilen – es handelt sich um eine Designentscheidung zur Verbesserung der Lesbarkeit.
var label string
if age >= 18 {
label = "adulto"
} else {
label = "minore"
}Probieren Sie es aus
Geben Sie abhängig vom Wert von n „positivo“, „zero“ oder „negativ“ aus.
Hinweis anzeigen
`if / else if / else`-Kette mit Bedingungen auf dem Schild.
Lösung nach 3 Versuchen verfügbar
Verwenden Sie die Init-Anweisung, um v := 42 im if zu deklarieren und nur dann auszugeben, wenn v >= 18.
Hinweis anzeigen
Syntax: `if init; condition { ... }`.
Lösung nach 3 Versuchen verfügbar
Was druckt dieses Programm?
x := 10
if x := 3; x > 5 {
fmt.Println("dentro:", x)
} else {
fmt.Println("else:", x)
}
fmt.Println("dopo:", x)Zusammenfassung
- Bedingungen ohne Klammern, geschweifte Klammern sind immer obligatorisch.
- Die Bedingung muss
boolsein: keine implizite Wahrhaftigkeit. - Init
if v, err := f(); err == nil { ... }schränkt den Umfang vonvunderrein. - Shadowing im Init: Achten Sie darauf, äußere Variablen nicht zu Shadowing zu machen.
- Kein Ternär: Schreiben Sie einen erweiterten
if/else.