Sichtbarkeit von Variablen innerhalb eines Pakets

Variablen haben immer auch eine Sichtbarkeit oder einen Gültigkeitsbereich. Globale Variablen sind im ganzen Paket sichtbar, lokale Variablen sind ab ihrer Definition sichtbar und können überschrieben werden.

Neben der Sichtbarkeit innerhalb eines Pakets gibt es auch die Sichtbarkeit externer Pakete, das im Abschnitt Sichtbarkeitsregeln beschrieben ist.

package main

import "fmt"

// Ist im ganzen Paket (main) sichtbar, nicht nur in dieser Datei
var meinName = "Gopher"

func leseZahl() int {
	return 3
}

func main() {
	// Nur in der Funktion main() sichtbar
	var meinAlter int

	if a := leseZahl(); a > 1 {
		// nach dem Ende der Bedingung ist meinName
		// auf den Ursprungswert zurückgesetzt
		//
		// meinName darf lokal auch einen anderen
		// Typ haben
		meinName := 123
		fmt.Println(meinName)
	}
	// a ist hier nicht mehr sichtbar, Fehler!
	// fmt.Println(a)
	fmt.Println(meinAlter)
}