Go Control Structures

Fångar Go:s klassiska range/break/defer-in-loop fotfästen under kodgranskning.

av v0lka · v0lka/skills

Testad · Fungerar ★ 8.8/10

Go Control Structures — Fångar Go:s klassiska range/break/defer-in-loop fotfästen under kodgranskning.

Vad den gör

En referenschecklista för fyra återkommande Go-kontrollflödesbuggar: mutera range-loop-kopior istället för originalet, lagra en pekare till range-variabeln (alla poster pekar till slut på det sista elementet), break avslutar bara den innersta switch/select istället för loopen, och defer inuti en loop som inte avfyras förrän funktionen returnerar. Triggers vid skrivning eller granskning av Go-kod som itererar över slices/arrays/maps/channels, använder break inuti switch/select nästlat i en loop, eller placerar defer inuti en loop-kropp.

Testrapport

Granskade en Go-fil med 3 buggar (range-pekarefälla, defer-i-loop-läcka, break-avslutar-bara-switch) både med och utan skillen: båda genomgångarna fångade alla 3 buggarna, men den skill-guidade genomgången namngav varje fallgrop med sin kanoniska kategori och bekräftade uttryckligen frånvaron av de andra två regelkategorierna (range-kopiemutation, kartiterationsrisker) -- en checklista-stil kompletthetsgaranti som den fria baslinjegranskningen inte erbjöd.

Testad: 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

Kommandon och exempelprompter

  • /go-control-structuresFångar Go:s klassiska range/break/defer-in-loop fotfästen under kodgranskning.

Skills triggas av vanliga förfrågningar — inga kommandon att memorera. Efter installationen aktiverar prompter som dessa skillen (på engelska):

  • 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