1. Variablen und Konstanten
In Golang sind Variablen und Konstanten zwei grundlegende Konzepte, die eine sehr wichtige Rolle in einem Programm spielen.
- Eine Variable ist ein benannter Bezeichner, der Daten in einem Programm speichert. In Golang wird das
var
-Schlüsselwort verwendet, um Variablen zu deklarieren. - Eine Konstante ist ein Bezeichner, dessen Wert im Programm nicht geändert werden kann. In Golang wird das
const
-Schlüsselwort verwendet, um Konstanten zu deklarieren.
2. Deklaration und Initialisierung von Golang-Variablen
2.1 Deklaration und Zuweisung einer einzelnen Variablen
In der Go-Sprache wird das var
-Schlüsselwort verwendet, um eine Variable mit dem Format var Variablenname Typ
zu deklarieren. Nach der Deklaration kann der Variable im nachfolgenden Code ein Wert zugewiesen werden, oder sie kann direkt bei der Deklaration initialisiert werden. Zum Beispiel:
var alter int // Deklariere eine Integer-Variable Alter
alter = 25 // Weise der Variable einen Wert zu
var name string = "Alice" // Deklariere und initialisiere die Variable Name
2.2 Deklaration mehrerer Variablen
Die Go-Sprache unterstützt die gleichzeitige Deklaration mehrerer Variablen, was den Code knapper machen kann. Die Massendeklaration erfolgt in der Regel am Anfang einer Funktion oder auf Paketebene. Zum Beispiel:
var (
vorname, nachname string
alter int
)
vorname = "John"
nachname = "Doe"
alter = 30
In der oben genannten Massendeklaration werden vorname
und nachname
als Strings deklariert, während alter
eine Ganzzahl ist.
2.3 Typinferenz und kurze Variabledeklaration
In der Go-Sprache ist es nicht immer erforderlich, den Typ der Variablen explizit anzugeben. Wenn bei der Deklaration einer Variable ein Initialisierungsausdruck bereitgestellt wird, kann Go den Typ der Variablen ableiten. Dies wird als Typinferenz bezeichnet. Die kurze Variabledeklaration unter Verwendung von :=
kann die Anweisung zur Deklaration und Initialisierung von Variablen basierend auf der Typrückschluss vereinfachen. Zum Beispiel:
stadt := "Berlin" // Verwende kurze Variabledeklaration, um gleichzeitig die Stadt zu deklarieren und zu initialisieren
land := "Deutschland" // Das Land wird als String-Typ inferiert
Es ist wichtig zu beachten, dass kurze Variabledeklarationen nur innerhalb von Funktionen verwendet werden können und nicht auf globaler Ebene.
2.4 Deklaration von Variablen außerhalb von Funktionen
Variablen, die außerhalb von Funktionen deklariert werden, haben einen Paketebene-Geltungsbereich. Diese Variablen sind im gesamten Paket sichtbar und zugänglich. Zum Beispiel:
var globaleVar string = "Ich bin global" // Deklaration einer globalen Variablen
func druckeGlobaleVar() {
fmt.Println(globaleVar) // Zugriff auf die globale Variable innerhalb der Funktion
}
Globale Variablen können zwischen beliebigen Funktionen innerhalb des Pakets geteilt werden, sollten jedoch sorgfältig verwendet werden, um potenzielle Namenskonflikte und unklare Referenzen zu vermeiden.
Tipp: Ein grundlegendes Verständnis des Funktionscodes hier ist ausreichend, ausführliche Erläuterungen zu Funktionen werden in späteren Abschnitten bereitgestellt.
3. Grundlegende Datentypen und Nullwerte
3.1 Grundlegende Datentypen in Golang
In der Go-Sprache bietet jeder Variablentyp explizite Semantik und Verhaltensmerkmale. Hier sind einige gängige grundlegende Datentypen:
-
int
,int8
,int16
,int32
,int64
: Unterschiedliche Bereich von Ganzzahlen -
uint
,uint8
,uint16
,uint32
,uint64
: Vorzeichenlose Ganzzahlen -
float32
,float64
: Gleitkommazahlen -
bool
: Boolesche Werte (true oder false) -
string
: Zeichenfolgen
3.2 Konzept der Nullwerte
In der Go-Sprache werden Variablen nach der Deklaration automatisch auf ihren Nullwert initialisiert. Der Nullwert bezieht sich auf den Standardwert des entsprechenden Typs, wenn eine Variable nicht explizit initialisiert wird. Dies ist in einigen anderen Sprachen nicht üblich, aber in Go stellt dies sicher, dass alle Variablen immer einen gültigen Anfangswert haben. Hier sind die Nullwerte für jeden grundlegenden Datentyp:
- Der Nullwert für eine Ganzzahl ist
0
- Der Nullwert für eine Gleitkommazahl ist
0.0
- Der Nullwert für ein Booleschen Wert ist
false
- Der Nullwert für eine Zeichenfolge ist eine leere Zeichenfolge
""
Zum Beispiel:
var i int // Nullwert ist 0
var f float64 // Nullwert ist 0.0
var b bool // Nullwert ist false
var s string // Nullwert ist ""
Das Verständnis des Konzepts der Nullwerte ist sehr wichtig, da es den Entwicklern helfen kann, das Verhalten der Variableninitialisierung zu verstehen und dazu verwendet werden kann, null-Pointer oder nicht initialisierte Fehler zu verhindern.
4. Geltungsbereich von Variablen
4.1 Lokale Variablen
Lokale Variablen sind Variablen, die innerhalb einer Funktion definiert sind, und sie können nur innerhalb dieser Funktion zugegriffen werden. Auch die Funktionsparameter gehören zu den lokalen Variablen. Von dem Moment an, an dem sie erstellt werden, bis die Funktion vollständig ausgeführt ist, verschwinden lokale Variablen. Jedes Mal, wenn eine Funktion aufgerufen wird, werden lokale Variablen neu erstellt.
func lokaleVariablenBeispiel() {
var lokaleVariable int = 10 // Dies ist eine lokale Variable
fmt.Println(lokaleVariable)
}
func main() {
lokaleVariablenBeispiel() // Ausgabe: 10
// fmt.Println(lokaleVariable) // Dies führt zu einem Kompilierungsfehler, da lokaleVariable hier nicht sichtbar ist
}
In dem obigen Beispiel kann lokaleVariable
nur innerhalb der Funktion lokaleVariablenBeispiel
zugegriffen werden.
4.2 Globale Variablen
Globale Variablen sind Variablen, die außerhalb von Funktionen definiert sind und in jeder Datei innerhalb des gleichen Pakets zugegriffen werden können. Wenn Sie globale Variablen in anderen Paketen verwenden möchten, muss der Variablennamen gemäß den Zugriffssteuerungsregeln von Go mit einem Großbuchstaben beginnen.
package main
import "fmt"
var globaleVariable int = 20 // Dies ist eine globale Variable
func main() {
fmt.Println(globaleVariable) // Ausgabe: 20
globaleÄndern()
fmt.Println(globaleVariable) // Ausgabe: 30
}
func globaleÄndern() {
globaleVariable = 30 // Ändere den Wert der globalen Variable
}
In diesem Beispiel ist globaleVariable
sowohl in der Funktion main
als auch in der Funktion globaleÄndern
sichtbar.
5 Deklaration und Verwendung von Konstanten
5.1 Das const
-Schlüsselwort
Wir verwenden das const
-Schlüsselwort, um Konstanten zu definieren. Konstanten sind Werte, die nicht geändert werden können, und sobald sie definiert sind, kann ihr Wert nicht geändert werden. Konstanten können jeden grundlegenden Datentyp wie Ganzzahlen, Gleitkommazahlen, Booleans oder Zeichenketten haben.
const Pi = 3.14 // Deklariere eine Gleitkommakonstante
const StrKonst string = "Hallo, Welt!" // Deklariere eine Zeichenkettenkonstante
func main() {
fmt.Println(Pi)
fmt.Println(StrKonst)
}
5.2 Aufzählungskonstanten
Die Go-Sprache hat keinen spezifischen Aufzählungstyp, aber Sie können das Schlüsselwort iota
verwenden, um Aufzählungen zu erreichen. Innerhalb eines const
-Blocks wird bei jeder zusätzlichen Konstantendeklaration der Wert von iota
um 1 erhöht.
const (
Sonntag = iota // 0
Montag // 1
Dienstag // 2
Mittwoch // 3
Donnerstag // 4
Freitag // 5
Samstag // 6
)
func main() {
fmt.Println(Sonntag) // Ausgabe: 0
fmt.Println(Samstag) // Ausgabe: 6
}
Der obige Code deklariert eine Aufzählung für die Wochentage, wobei iota
innerhalb des const
-Blocks bei 0 initialisiert wird und für jede weitere Deklaration um 1 erhöht wird.
5.3 Gültigkeitsbereich von Konstanten
Der Gültigkeitsbereich von Konstanten ist ähnlich wie bei Variablen. Wenn eine Konstante innerhalb einer Funktion definiert ist, ist ihr Gültigkeitsbereich auf diese Funktion beschränkt. Wenn eine Konstante außerhalb einer Funktion (global) definiert ist, ist ihr Gültigkeitsbereich das gesamte Paket, und wenn der erste Buchstabe groß geschrieben ist, kann sie in anderen Paketen zugriffen werden.
Die Verwaltung des Gültigkeitsbereichs von Konstanten hilft dabei, die globale Gültigkeit zu reduzieren und die Programmpflege und Lesbarkeit zu verbessern.
const GlobaleKonst = "Dies ist eine globale Konstante"
func main() {
const LokaleKonst = "Dies ist eine lokale Konstante"
fmt.Println(GlobaleKonst) // Dies ist gültig
fmt.Println(LokaleKonst) // Dies ist gültig
}
func eineAndereFunktion() {
// fmt.Println(LokaleKonst) // Dies führt zu einem Kompilierungsfehler: LokaleKonst ist in dieser Funktion nicht sichtbar
fmt.Println(GlobaleKonst) // Dies ist gültig
}
In diesem Beispiel kann LokaleKonst
nur innerhalb der Funktion main
zugegriffen werden, während GlobaleKonst
im gesamten Paket zugänglich ist.