Variablen in Go

Header für Go-ArtikelAktualisiert am 26. Juli 2018


Auf den ersten Artikel, der sich mit der Installation von Go (unter macOS) befaßte, folgen im zweiten Teil einige Ausführungen zu Variablen (und Konstanten).

Variablen

In diesem ersten Beispiel wird eine Variable deklariert und anschließend ein Wert vom Typ int zugewiesen. Diese Vorgehensweise in zwei Schritten sieht folgendermaßen aus:


var x int   // Deklaration
x = 100     // Zuweisung

Für die Variablendeklaration existiert das Schlüsselwort var. Dem folgt der Variablenname und dann der Datentyp.

Die Deklaration mehrere Variablen kann auch mit runden Klammern in einer Gruppe zusammengefasst werden:

var (
    x int
    y int
)

In einer Gruppe können auch Variablen unterschiedlichen Typs deklariert werden:

var (
    name string
    age int
)

Es ist auch möglich, Deklaration und Zuweisung in einer Zeile vorzunehmen:

var x = 100

Außerdem existiert unter Verwendung von := auch eine Kurzschreibweise (short variable declaration), die allerdings nur innerhalb von Funktionen erlaubt ist.

x := 100

In den beiden vorhergehenden Beispielen wurde der Datentyp int weggelassen. Denn anhand des zugewiesenen Werts, kann der Compiler auf den Datentyp schließen, so daß eine explizite Angabe entfällt. Dies wird als type inference bezeichnet.

Eine Mehrfachzuweisung in einer Zeile ist ebenfalls erlaubt:

x, y := 100, 500 // Deklaration von zwei Variablen

Diese Zweifach-Deklaration mit := sollte nicht verwechselt werden mit einer Mehrfach-Zuweisung mittels des Zuweisungs-Operator (=).

a, b = x, y

Hier wird a und b jeweils der Wert von x und y zugewiesen.

Sofern keine Zuweisung vorgenommen wird, erhält die Variable den zero value des Datentyps. Das ist bei numerischen Werten die 0, bei Booleschen Werten false, bei Zeichenketten "" und bei Interfaces und Referenztypen nil.

package main

import "fmt"

func main() {
    var width int
    fmt.Println("width =", width)
}
// zero value:
// -> width = 0

Konstanten

Für die Deklaration von Konstanten steht das Schlüsselwort const zur Verfügung. Ansonsten gelten die zu den Variablen gemachten Ausführungen.

const x int
x = 100

Freilich kann der einer Konstanten zugewiesene Wert nicht mehr geändert werden. Folgender Code führt zu einer Fehlermeldung:

package main

import "fmt"

func main() {
    const height = 20
    height = 40
    fmt.Println("height =", height)
}
// -> cannot assign to height