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
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.
x := 5
x++ // ok: incrementa x
// y := x++ // ERRORE di compilazione
fmt.Println(x) // 6Vergleich
== != < <= > >= gibt bool zurück. Sie gelten für Zahlen und Zeichenfolgen; für
Strukturen ALLE Felder müssen vergleichbar sein (keine Slices/Maps darin).
"abc" == "abc" // true
"abc" < "abd" // true (ordine lessicografico)
3 != 4 // trueLogisch 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.
adult := age >= 18
seniorAdult := age >= 18 && age < 65Bitweise
& UND, | ODER, ^ XOR, << Linksverschiebung, >> Rechtsverschiebung, &^ UND
NICHT (etwas klar). Sie sind nützlich für Flags, binäres Parsen und
Optimierungen:
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 // trueKeine 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.
i := 1
f := 1.5
// i + f // ERRORE
float64(i) + f // 2.5Du bist dran
Berechnen Sie im Rest den Rest der Division von 17 durch 5 und drucken Sie ihn aus. Erwartet: 2.
Hinweis anzeigen
Der Modulo-Operator ist `%`.
Lösung nach 3 Versuchen verfügbar
Geben Sie „true“ aus, wenn das Alter zwischen 18 und 65 Jahren liegt, andernfalls „false“.
Hinweis anzeigen
Kombinieren Sie zwei Vergleiche mit `&&`.
Lösung nach 3 Versuchen verfügbar
Was gibt dieser Code aus?
a, b := 7, 2
fmt.Println(a/b, a%b)Zusammenfassung
- Klassische Arithmetik;
/zwischen Ganzzahlen ist eine ganzzahlige Division (Abschneiden). ++und--sind Anweisungen, keine Ausdrücke: neiny := 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).