Que fait golang-skills ?
Compétences pour agents IA afin d'écrire du code Go idiomatique et prêt pour la production, distillées à partir des pratiques de Google, Uber et de la communauté.
Principes directeurs
- Idiomatique : Suivez les conventions Go (Effective Go, Uber Go Style Guide).
- Prêt pour la production : Priorisez la fiabilité, la maintenabilité et la performance.
- Distillé : Synthèse des meilleures pratiques communautaires.
Fonctionnalités clés
- Gestion des erreurs : Privilégiez les erreurs explicites plutôt que les exceptions. Utilisez
errors.Is(),errors.As()et des wrappers avecfmt.Errorf("...: %w", err). - Nommage : Utilisez des noms courts et clairs. Un nom plus long indique une portée plus large. Évitez le nommage hongrois.
- Structure des packages : Organisez le code par responsabilité. Évitez les packages
utiloucommon. - Concurrence : Synchronisez avec des channels ou des mutex. Utilisez
sync.WaitGrouppour les goroutines groupées. Privilégiez la composition avec des goroutines légères. - Interfaces : Définissez des interfaces petites et ciblées. Acceptez les interfaces, retournez des structures.
Commandes et utilisation
- Initialisation :
go mod init <nom_du_module> - Compilation et test : Utilisez
go build,go test,go vet,go fmt. - Dépendances : Gérez avec
go mod tidy,go mod verify. - Documentation : Utilisez
go docet rédigez des commentaires de documentation.
Exemples
// Exemple idiomatique de gestion d'erreurs
func ReadConfig(path string) (*Config, error) {
f, err := os.Open(path)
if err != nil {
return nil, fmt.Errorf("ouverture du fichier de configuration : %w", err)
}
defer f.Close()
var cfg Config
if err := json.NewDecoder(f).Decode(&cfg); err != nil {
return nil, fmt.Errorf("décodage de la configuration : %w", err)
}
return &cfg, nil
}
Références
Contribution
Consultez le dépôt original h0rn3t/golang-skills pour plus de détails et pour contribuer.