Variablen, Konstanten und Datentypen in Go
#einfache Datentypen
#Integer/Ganzzahlen
Wobei int
und uint
jeweils ein Alias ist, der – abhängig vom System – auf den 32- bzw. 64-bit-Wert zeigt. int* sind vorzeichenbehaftet, uint* sind nur positive Werte (unsigned).
#Float/Fließkommazahlen
- float32
- float64
Die Zahlen bei int und float geben die Präzision in bit an, also wie viele Bits sie im RAM belegen. Standardmäßig sollte man, wenn nicht anders gefordert, int
, uint
, float64
oder complex128
nutzen.
#Complex/Komplexe Zahlen
- complex64
- complex128
Bei complex64 sind 32 bit für den Realzahl-Anteil und 32 bit für den »komplexen Anteil«. Bei complex128 entsprechend jeweils 64 bit.
#Strings/Zeichenketten
- string
#Bool/Boole'sche Werte/Wahrheitswerte
- bool
#Variablen deklarieren
In Go deklariert man eine Variable mit den Schlüsselwort var
, worauf der Name der Variablen folgt und anschließend der Datentyp, also z.B.
var nummer int
Man kann auch direkt einen Wert zuweisen:
var pi float64 = 3.14159
Weist man bei der Deklaration einer Variablen keinen Wert zu, wird diese mit dem, für den Typ, jeweiligem Null-Wert zugewiesen. Bei int wäre dies z.B. 0
, bei float 0.000000
und bei strings ""
(die leere Zeichenkette). Bool initialisiert in diesem Fall mit false
.
#Kurzform der Deklaration
Innerhalb von Funktionen kann man mit dem :=
-Operator auch Variablen ohne das var
-Schlüsselwort definieren. Man kann also statt
var empty string
auch
empty := ""
schreiben. Natürlich geht das auch für andere Typen:
num := 10
temperatur := 29.7
Der Datentyp wird dabei aus dem zugewiesenen Wert abgeleitet. Diese Ableitung funktioniert auch bei der Deklaration mit var:
var isWahr := true
Außerhalb von Funktionen, also im globalen bzw. »Package«-Namensraum (global scope/package scope) funktioniert die Kurzform mit :=
nicht, da muss jede Zeile mit einem Schlüsselwort beginnen.
Man kann auch mehrere Variablen – auch mit verschiedenen Typen – in einer Zeile zuweisen, aber ich finde, da leidet die Lesbarkeit.
farbe, km := "blau", 98382
#Konstanten
Konstanten werden in Go mit dem Schlüsselwort const
deklariert. Die Kurzzuweiseung mittels :=
ist nicht möglich. Auch können Konstanten nur einfache Datentypen abbilden.
const pi = 3.14159
Wichtig ist, dass der Wert der Konstanten zur Kompilierzeit bekannt sein muss. Bei statischen Zuweisungen ist dies kein Problem, wenn man den Wert aber berechnen lässt, muss diese Berechnung zur Kompilierzeit durchgeführt werden können:
const firstname = "Test"
const lastname = "User"
const fullname = firstname + " " + lastname
Berechnungen, die nur zur Laufzeit aufgelöst werden können, sind also nicht zulässig. So kann man beispielsweise das Datum oder die Uhrzeit, die bei Ausführung des Programms aktuell sind, nicht einer Konstanten zuweisen.