- Dynamic Sidebar mit window.COURSES_MANIFEST für 13 Kurse (216 Kapitel) - Kurswechsler Dropdown mit Direktnavigation - Fortschrittsanzeige mit Solved-Checkmarks (✓) aus localStorage - Responsive Off-Canvas Drawer mit Floating Action Button (☰ Kapitel) & Backdrop auf Mobile/Tablets - Web-IDE Topbar Drawer-Button (☰ Kapitel) für unterbrechungsfreien Vollbild-Editor - Saubere Bereinigung redundanter statischer Legacy-Sidebars |
||
|---|---|---|
| .. | ||
| aufgabe.go | ||
| index.html | ||
| musterloesung.go | ||
| README.md | ||
| test_aufgabe.go | ||
Go 08: Ressourcensicherheit mit defer & Recover 🛡️
Willkommen zu Modul 08 des Go (Golang) Kurses!
In diesem Modul lernst du, wie Go Ressourcenbereinigung und Crash-Prävention handhabt: Verzögerte Ausführung mit defer (LIFO-Stack), fatale Systemzustände mit panic und Absicherung kritischer Programmteile mit recover().
💡 1. Das Wichtigste in Kürze
defer
Anweisungen mit defer werden garantiert ausgeführt, sobald die umschließende Funktion beendet wird.
- LIFO: Mehrere
defer-Aufrufe werden in umgekehrter Reihenfolge abgearbeitet (wie ein Stack). - Einsatzgebiete:
file.Close(),mutex.Unlock(), Datenbank-Verbindungen schließen.
panic & recover
panic(val)bricht die normale Funktionsausführung ab und läuft den Call-Stack hoch.recover()fängt einen laufenden Panic ab, funktioniert jedoch ausschließlich innerhalb einer defer-Funktion.
func SafeRun() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Panic abgefangen:", r)
}
}()
panic("Schwerwiegender Systemausfall")
}
🎯 Teilziele in aufgabe.go
- TODO 1:
ProtokollierteOperation(name string, logEntries *[]string) stringmitdeferLIFO Logging implementieren. - TODO 2:
RessourcenManagermitAcquire()undRelease()überdefersteuern. - TODO 3:
KritischeBerechnung(teiler int) intmitpanic("division durch null")beiteiler == 0. - TODO 4:
SichereAusfuehrung(fn func()) (recoveredErr any, ok bool)mitdeferundrecover()implementieren.