⚡ Go Cloud Microservices & Systems

Go 01: Syntax, Variablen, Basistypen & Type Conversion

Tauche ein in das statische Typensystem von Go: Deklaration mit var vs. :=, Zero Values, Konstanten mit iota und explizite Typkonvertierung.

💡 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)
}
🏢 Didaktische Analogie: Passgenaue Frachtbehälter

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

💡 Go Pro-Tipp: Unbenutzte Variablen verhindern

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!

💻 In Web-IDE öffnen → Weiter zu Go 02 →