Go Control Structures

Rileva i classici 'footguns' di Go range/break/defer-in-loop durante la revisione del codice.

di v0lka · v0lka/skills

Promosso ★ 8.8/10

Go Control Structures — Rileva i classici 'footguns' di Go range/break/defer-in-loop durante la revisione del codice.

Cosa fa

Una checklist di riferimento per quattro bug ricorrenti nel flusso di controllo di Go: mutare copie di cicli range invece dell'originale, memorizzare un puntatore alla variabile range (tutte le voci finiscono per puntare all'ultimo elemento), break che esce solo dallo switch/select più interno invece del ciclo, e defer all'interno di un ciclo che non si attiva finché la funzione non ritorna. Si attiva quando si scrive o si revisiona codice Go che itera su slices/arrays/maps/channels, usa break all'interno di switch/select annidati in un ciclo, o posiziona defer all'interno del corpo di un ciclo.

Rapporto di test

Revisionato un file Go con 3 bug (range-pointer trap, defer-in-loop leak, break-only-exits-switch) sia con che senza la skill: entrambi i passaggi hanno rilevato tutti e 3 i bug, ma il passaggio guidato dalla skill ha nominato ogni insidia con la sua categoria canonica e ha esplicitamente confermato l'assenza delle altre due categorie di regole (range-copy mutation, map-iteration hazards) — una garanzia di completezza in stile checklist che la revisione di base a forma libera non offriva.

Testato il: 2026-07-16 · Claude Code 2.x (agent harness)

Installazione

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

Comandi e prompt di esempio

  • /go-control-structuresRileva i classici 'footguns' di Go range/break/defer-in-loop durante la revisione del codice.

Gli skill si attivano con richieste in linguaggio naturale, senza comandi da ricordare. Dopo l'installazione, prompt come questi lo attivano (in inglese):

  • 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