Go Control Structures

Fängt Go's klassische Range/Break/Defer-in-Loop-Fußangeln während der Code-Überprüfung ab.

von v0lka · v0lka/skills

Getestet · Funktioniert ★ 8.8/10

Go Control Structures — Fängt Go's klassische Range/Break/Defer-in-Loop-Fußangeln während der Code-Überprüfung ab.

Was es kann

Eine Referenz-Checkliste für vier wiederkehrende Go-Kontrollflussfehler: Modifizieren von Range-Loop-Kopien statt des Originals, Speichern eines Zeigers auf die Range-Variable (alle Einträge zeigen am Ende auf das letzte Element), Break verlässt nur den innersten Switch/Select statt der Schleife und Defer innerhalb einer Schleife wird erst ausgelöst, wenn die Funktion zurückkehrt. Löst beim Schreiben oder Überprüfen von Go-Code aus, der über Slices/Arrays/Maps/Channels iteriert, Break innerhalb von Switch/Select verwendet, das in einer Schleife verschachtelt ist, oder Defer innerhalb des Schleifenkörpers platziert.

Testbericht

Ein 3-Fehler-Go-Datei (Range-Pointer-Falle, Defer-in-Loop-Leak, Break-nur-Exits-Switch) sowohl mit als auch ohne Skill überprüft: Beide Durchläufe fingen alle 3 Fehler ab, aber der Skill-geführte Durchlauf benannte jeden Fallstrick nach seiner kanonischen Kategorie und bestätigte explizit die Abwesenheit der anderen beiden Regelkategorien (Range-Copy-Mutation, Map-Iteration-Gefahren) – eine Checklisten-artige Vollständigkeitsgarantie, die die freie Basisüberprüfung nicht bot.

Getestet am: 2026-07-16 · Claude Code 2.x (agent harness)

Installation

git clone https://github.com/v0lka/skills
mkdir -p ~/.claude/skills
cp -r skills/development/idiomatic-go/go-control-structures ~/.claude/skills/go-control-structures

Befehle & Beispiel-Prompts

  • /go-control-structuresFängt Go's klassische Range/Break/Defer-in-Loop-Fußangeln während der Code-Überprüfung ab.

Skills reagieren auf normale Anfragen — keine Slash-Befehle nötig. Nach der Installation aktivieren Prompts wie diese den Skill (auf Englisch):

  • Review this Go code for range-variable capture and defer-in-loop bugs
  • Does this break statement actually exit the loop or just the switch?
  • Check my Go function for classic loop and defer footguns before I ship