link

Logo for Markus Rennings

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

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

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

#Bool/Boole'sche Werte/Wahrheitswerte

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


  1. In Klammern stehen Alias-Namen