💡 1. Variablen und Typisierung in Go
Go ist eine statisch typisierte, kompilierte Sprache mit kompromissloser Typsicherheit. Es gibt zwei primäre Wege, Variablen zu definieren:
package main
import "fmt"
func main() {
// 1. Ausführliche Deklaration mit 'var' (Standardwert = Zero Value)
var serverName string = "api-gateway"
var port int = 8080
var isRunning bool = true
// 2. Kurzschreibweise ':=' mit Type Inference (nur innerhalb von Funktionen)
requestCount := 1050 // Typ automatisch int
latencyMs := 12.45 // Typ automatisch float64
fmt.Printf("Server %s an Port %d (Aktiv: %t) | Anfragen: %d (%.2fms)\n",
serverName, port, isRunning, requestCount, latencyMs)
}
In dynamischen Sprachen wie Python oder JavaScript gleicht eine Variable einer flexiblen Plastiktüte: Man kann eine Zahl hineinwerfen und sie später durch einen Text ersetzen. In Go ist jede Variable ein lasergeschnittener Stahlcontainer: Ein int-Container fasst ausschließlich Ganzzahlen. Das verhindert fatale Laufzeitabstürze in Cloud-Systemen bereits beim Kompilieren!
📐 2. Zero Values & Explizite Type Conversion
In Go gibt es kein uninitialisiertes undefined. Variablen ohne Initialwert erhalten verlässlich ihren Zero Value:
| Go Datentyp | Zero Value (Standardwert) | Speichergröße / Besonderheit |
|---|---|---|
int / int64 |
0 |
Ganzzahl (Plattformabhängig 32/64 Bit) |
float64 |
0.0 |
64-Bit IEEE-754 Fließkommazahl (Standard für Rechnungen) |
string |
"" (Leerer String) |
UTF-8 codiert, unveränderlich (Immutable) |
bool |
false |
Wahrheitswert (true oder false) |
Pointers / Slices / Maps |
nil |
Null-Referenz / Uninitialisierter Zustand |
Keine implizite Typumwandlung (Type Casting)!
Go führt niemals automatische Typumwandlungen durch. Jeder Übergang zwischen Typen muss explizit formuliert werden:
summe := 150 // int
anzahl := 4 // int
// FEHLER in Go: durchschnitt := summe / anzahl (Ergibt 37, da Ganzzahldivision!)
// RICHTIG:
durchschnitt := float64(summe) / float64(anzahl) // Ergibt 37.5 (float64)
🔒 3. Konstanten (const) & der iota Zähler
Konstanten werden mit const deklariert und müssen zur Compile-Zeit feststehen. Mit iota bietet Go einen eleganten Enumerator:
const (
StatusStopped = iota // 0
StatusStarting // 1
StatusRunning // 2
StatusError // 3
)
🎯 Aufgaben & Checkliste in aufgabe.go
Der Go-Compiler verbietet ungenutzte Variablen rigoros mit dem Fehler declared and not used. Verwende den Blank Identifier _, falls du einen Rückgabewert bewusst ignorieren möchtest!