Direkt zum Hauptinhalt springen
eLearner.app
Modul 1 · Lektion 4 von 54/50 im Kurs~8 min
Lektionen des Moduls (4/5)

Operatoren

Go verfügt über die klassischen Operatoren, die Sie erwarten würden, mit wenigen Überraschungen: Arithmetik, Vergleich, logisch, bitweise. Kein ternärer Operator (a ? b : c), keine Überladung, keine impliziten Konvertierungen zwischen Typen. Einfachheit ist ein Merkmal.

Arithmetik

Go
a, b := 10, 3
fmt.Println(a + b)  // 13
fmt.Println(a - b)  // 7
fmt.Println(a * b)  // 30
fmt.Println(a / b)  // 3   ← divisione INTERA tra interi
fmt.Println(a % b)  // 1   ← resto (modulo)

Inkrementieren und Dekrementieren sind ANWEISUNGEN, keine Ausdrücke

x++ und x-- erzeugen keinen Wert: Sie sind „Aktionen“ und nichts mehr. Kein y := x++ wie in C.

Go
x := 5
x++          // ok: incrementa x
// y := x++  // ERRORE di compilazione
fmt.Println(x) // 6

Vergleich

== != < <= > >= gibt bool zurück. Sie gelten für Zahlen und Zeichenfolgen; für Strukturen ALLE Felder müssen vergleichbar sein (keine Slices/Maps darin).

Go
"abc" == "abc"  // true
"abc" < "abd"   // true (ordine lessicografico)
3 != 4           // true

Logisch mit Kurzschluss

&&, ||, !. Sie schließen von links nach rechts kurz: wenn der erste Der Operand reicht aus, um das Ergebnis zu bestimmen, der zweite ist nicht gerade ausgewertet.

Go
adult := age >= 18
seniorAdult := age >= 18 && age < 65

Bitweise

& UND, | ODER, ^ XOR, << Linksverschiebung, >> Rechtsverschiebung, &^ UND NICHT (etwas klar). Sie sind nützlich für Flags, binäres Parsen und Optimierungen:

Go
flags := uint8(0b0000_0011)
flags |= 0b0000_0100   // imposta un bit:    0000_0111
flags &^= 0b0000_0010  // cancella un bit:   0000_0101
hasFlag := flags & 0b0000_0100 != 0  // true

Keine impliziten Konvertierungen

1 + 1.5 in Go kompiliert, da es sich bei beiden um untypisierte Literale handelt. Aber var i int = 1; i + 1.5 tut NICHT: Sie benötigen float64(i) + 1.5.

Go
i := 1
f := 1.5
// i + f          // ERRORE
float64(i) + f    // 2.5

Du bist dran

Übung#go.m1.l4.e1
Versuche: 0Wird geladen…

Berechnen Sie im Rest den Rest der Division von 17 durch 5 und drucken Sie ihn aus. Erwartet: 2.

Editor wird geladen…
Hinweis anzeigen

Der Modulo-Operator ist `%`.

Lösung nach 3 Versuchen verfügbar

Übung#go.m1.l4.e2
Versuche: 0Wird geladen…

Geben Sie „true“ aus, wenn das Alter zwischen 18 und 65 Jahren liegt, andernfalls „false“.

Editor wird geladen…
Hinweis anzeigen

Kombinieren Sie zwei Vergleiche mit `&&`.

Lösung nach 3 Versuchen verfügbar

Quiz#go.m1.l4.e3
Bereit

Was gibt dieser Code aus?

Go
a, b := 7, 2
fmt.Println(a/b, a%b)
Antwortoptionen

Zusammenfassung

  • Klassische Arithmetik; / zwischen Ganzzahlen ist eine ganzzahlige Division (Abschneiden).
  • ++ und -- sind Anweisungen, keine Ausdrücke: nein y := x++.
  • Vergleichs- und logische Operatoren erzeugen bool; &&/|| Kurzschluss.
  • Bitweiser & | ^ << >> &^ für Flags und binäres Parsen.
  • Keine impliziten Konvertierungen zwischen verschiedenen Typen: Verwenden Sie type(x).