Direkt zum Hauptinhalt springen
eLearner.app
Modul 2 · Lektion 1 von 56/50 im Kurs~10 min
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

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

Go
n := 0
// if n { ... }   // ERRORE: int non è bool
if n != 0 { ... }  // ok

Init-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 ;:

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

Go
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 esterna

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

Go
var label string
if age >= 18 {
    label = "adulto"
} else {
    label = "minore"
}

Probieren Sie es aus

Übung#go.m2.l1.e1
Versuche: 0Wird geladen…

Geben Sie abhängig vom Wert von n „positivo“, „zero“ oder „negativ“ aus.

Editor wird geladen…
Hinweis anzeigen

`if / else if / else`-Kette mit Bedingungen auf dem Schild.

Lösung nach 3 Versuchen verfügbar

Übung#go.m2.l1.e2
Versuche: 0Wird geladen…

Verwenden Sie die Init-Anweisung, um v := 42 im if zu deklarieren und nur dann auszugeben, wenn v >= 18.

Editor wird geladen…
Hinweis anzeigen

Syntax: `if init; condition { ... }`.

Lösung nach 3 Versuchen verfügbar

Quiz#go.m2.l1.e3
Bereit

Was druckt dieses Programm?

Go
x := 10
if x := 3; x > 5 {
    fmt.Println("dentro:", x)
} else {
    fmt.Println("else:", x)
}
fmt.Println("dopo:", x)
Antwortoptionen

Zusammenfassung

  • Bedingungen ohne Klammern, geschweifte Klammern sind immer obligatorisch.
  • Die Bedingung muss bool sein: keine implizite Wahrhaftigkeit.
  • Init if v, err := f(); err == nil { ... } schränkt den Umfang von v und err ein.
  • Shadowing im Init: Achten Sie darauf, äußere Variablen nicht zu Shadowing zu machen.
  • Kein Ternär: Schreiben Sie einen erweiterten if/else.