Go Control Structures

Détecte les pièges classiques de Go range/break/defer-in-loop lors de la révision de code.

par v0lka · v0lka/skills

Testé · Fonctionne ★ 8.8/10

Go Control Structures — Détecte les pièges classiques de Go range/break/defer-in-loop lors de la révision de code.

Ce que fait

Une checklist de référence pour quatre bugs récurrents de flux de contrôle Go : la mutation de copies de boucles range au lieu de l'original, le stockage d'un pointeur vers la variable range (toutes les entrées finissent par pointer vers le dernier élément), break ne sortant que du switch/select le plus interne au lieu de la boucle, et defer à l'intérieur d'une boucle ne se déclenchant pas avant le retour de la fonction. Se déclenche lors de l'écriture ou de la révision de code Go qui itère sur des slices/arrays/maps/channels, utilise break à l'intérieur d'un switch/select imbriqué dans une boucle, ou place defer à l'intérieur du corps d'une boucle.

Rapport de test

Révisé un fichier Go à 3 bugs (piège du pointeur de range, fuite defer-in-loop, break-only-exits-switch) avec et sans la compétence : les deux passages ont détecté les 3 bugs, mais le passage guidé par la compétence a nommé chaque piège par sa catégorie canonique et a explicitement confirmé l'absence des deux autres catégories de règles (mutation de copie de range, risques d'itération de map) — une garantie de complétude de type checklist que la révision de base libre n'offrait pas.

Testé le: 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

Commandes et exemples de prompts

  • /go-control-structuresDétecte les pièges classiques de Go range/break/defer-in-loop lors de la révision de code.

Les skills se déclenchent sur des demandes en langage courant — aucune commande à retenir. Après installation, des prompts comme ceux-ci l'activent (en anglais) :

  • 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