In der Programmiersprache Go gibt es eine Vielzahl von Operatoren, die in verschiedenen Kategorien zusammengefasst werden können. Diese Kategorien umfassen arithmetische Operatoren, Zuweisungsoperatoren, Vergleichsoperatoren, logische Operatoren, bitweise Operatoren und spezielle Operatoren. Jeder dieser Operatoren spielt eine entscheidende Rolle bei der Manipulation von Daten und der Implementierung von Algorithmen.
Arithmetische Operatoren werden für mathematische Operationen verwendet:
+ : Addition- : Subtraktion* : Multiplikation/ : Division% : Modulo (Rest der Division)Beispiel:
a := 10
b := 3
fmt.Println(a + b) // Ausgabe: 13
fmt.Println(a - b) // Ausgabe: 7
fmt.Println(a * b) // Ausgabe: 30
fmt.Println(a / b) // Ausgabe: 3
fmt.Println(a % b) // Ausgabe: 1Zuweisungsoperatoren weisen Variablen Werte zu und können gleichzeitig Operationen durchführen:
= : Zuweisung+= : Addition und Zuweisung-= : Subtraktion und Zuweisung*= : Multiplikation und Zuweisung/= : Division und Zuweisung%= : Modulo und ZuweisungBeispiel:
a := 5
a += 2 // a = a + 2, Ausgabe: 7
a -= 3 // a = a - 3, Ausgabe: 4
a *= 2 // a = a * 2, Ausgabe: 8
a /= 4 // a = a / 4, Ausgabe: 2
a %= 2 // a = a % 2, Ausgabe: 0
fmt.Println(a)Vergleichsoperatoren werden verwendet, um zwei Werte zu vergleichen:
== : Gleichheit!= : Ungleichheit< : Kleiner als<= : Kleiner oder gleich> : Größer als>= : Größer oder gleichBeispiel:
a := 5
b := 3
fmt.Println(a == b) // Ausgabe: false
fmt.Println(a != b) // Ausgabe: true
fmt.Println(a < b) // Ausgabe: false
fmt.Println(a <= b) // Ausgabe: false
fmt.Println(a > b) // Ausgabe: true
fmt.Println(a >= b) // Ausgabe: trueLogische Operatoren werden verwendet, um boolesche Werte zu kombinieren:
&& : Logisches UND|| : Logisches ODER! : Logisches NICHTBeispiel:
a := true
b := false
fmt.Println(a && b) // Ausgabe: false
fmt.Println(a || b) // Ausgabe: true
fmt.Println(!a) // Ausgabe: falseBitweise Operatoren führen Operationen auf der Bit-Ebene durch:
& : Bitweises UND| : Bitweises ODER^ : Bitweises XOR&^ : Bitweises AND NOT<< : Linksshift>> : RechtsshiftBeispiel:
a := 5 // 0101 in Binär
b := 3 // 0011 in Binär
fmt.Println(a & b) // Ausgabe: 1 (0001 in Binär)
fmt.Println(a | b) // Ausgabe: 7 (0111 in Binär)
fmt.Println(a ^ b) // Ausgabe: 6 (0110 in Binär)
fmt.Println(a &^ b) // Ausgabe: 4 (0100 in Binär)
fmt.Println(a << 1) // Ausgabe: 10 (1010 in Binär)
fmt.Println(a >> 1) // Ausgabe: 2 (0010 in Binär)Es gibt auch spezielle Operatoren für bestimmte Operationen:
& : Adressoperator (liefert die Adresse einer
Variablen)* : Dereferenzierungsoperator (liefert den Wert an der
Adresse einer Variablen). : Punktoperator (Zugriff auf Felder in Structs)[] : Indexoperator (Zugriff auf Elemente in Arrays,
Slices und Maps)Beispiel:
// Adress- und Dereferenzierungsoperatoren
var a int = 10
var p *int = &a
fmt.Println(p) // Ausgabe: Adresse von a
fmt.Println(*p) // Ausgabe: 10
// Punktoperator bei Structs
type Person struct {
Name string
Age int
}
p1 := Person{Name: "Alice", Age: 30}
fmt.Println(p1.Name) // Ausgabe: Alice
fmt.Println(p1.Age) // Ausgabe: 30
// Indexoperator bei Arrays, Slices und Maps
arr := []int{1, 2, 3}
fmt.Println(arr[0]) // Ausgabe: 1
m := map[string]int{"one": 1, "two": 2}
fmt.Println(m["one"]) // Ausgabe: 1