Table des matières
Utilisez les outils intégrés de Go : go generate
Tirer parti des outils de génération de code
Écrire des générateurs de code personnalisés
Meilleures pratiques
Maison développement back-end Golang Comment générer du code dans Go

Comment générer du code dans Go

Oct 10, 2025 am 12:10 AM
go Génération de code

Utilisez go generate avec les directives //go:generate pour automatiser la génération de code, comme l'exécution de stringer pour les méthodes de chaîne d'énumération. 2. Tirez parti d'outils tels que protoc-gen-go pour protobufs, mockgen pour les simulations d'interface, swag pour les documents Swagger, go-bindata pour l'intégration de fichiers et sqlboiler ou ent pour le code ORM basé sur une base de données. 3. Écrivez des générateurs personnalisés à l'aide de text/template et go/format pour produire du code Go formaté à partir de modèles de données. 4. Suivez les meilleures pratiques en séparant le code généré, en régénérant les modifications, en évitant les modifications manuelles, en documentant le processus et en vérifiant les fichiers générés dans le contrôle de version pour garantir la cohérence et la reproductibilité.

Comment générer du code dans Go

La génération de code dans Go fait généralement référence soit à l'écriture manuelle de programmes Go, soit à l'utilisation d'outils pour générer automatiquement des parties du code, comme pour le passe-partout, les clients API, les structures de données ou les implémentations de protocole. Voici comment aborder efficacement la génération de code dans Go.

Utilisez les outils intégrés de Go : go generate

La commande go generate est une fonctionnalité intégrée qui vous permet d'automatiser la génération de code à l'aide de directives dans vos fichiers sources.

  • Ajoutez un commentaire comme //go:generate command dans votre fichier .go .
  • Exécutez go generate dans le terminal pour exécuter la commande.

Exemple:

 //go:générer un stringer -type=Pilule
tapez Pilule entier

const (
    Pilule placebo = iota
    Aspirine
    Ibuprofène
)

Courir:

 allez générer

Cela invoquera l'outil stringer (de golang.org/x/tools/cmd/stringer ) pour générer des noms de chaîne lisibles par l'homme pour l'énumération Pill .

Assurez-vous que l'outil est installé :

 allez installer golang.org/x/tools/cmd/stringer@latest

Tirer parti des outils de génération de code

Plusieurs outils populaires aident à générer du code Go pour les tâches courantes :

  • stringer : génère des méthodes de chaîne pour les constantes entières (comme indiqué ci-dessus).
  • protoc-gen-go : génère du code Go à partir des fichiers Protocol Buffer ( .proto ).
  • mockgen : Crée des implémentations fictives pour les interfaces (utilisées dans les tests).
  • swag : Génère la documentation Swagger à partir des annotations Go.
  • go-bindata : intègre des fichiers statiques dans les binaires Go.
  • sqlboiler ou ent : Générez du code de type ORM à partir de schémas de base de données.

Exemple avec mockgen :

 mockgen -source=service.go -destination=mocks/service_mock.go

Cela génère une simulation pour toutes les interfaces de service.go , utile pour les tests unitaires avec injection de dépendances.

Écrire des générateurs de code personnalisés

Vous pouvez écrire votre propre générateur de code à l'aide du package text/template et go/format de Go pour produire une syntaxe Go valide.

Mesures:

  • Définissez un modèle de données (par exemple, structures, types) qui décrit ce que vous souhaitez générer.
  • Utilisez des modèles pour définir la structure de sortie.
  • Analysez le modèle et exécutez-le avec vos données.
  • Formatez et écrivez la sortie en utilisant gofmt ou go/format .

Exemple d'extrait :

 paquet principal

importer (
    "fmt"
    "aller/formater"
    "os"
    "texte/modèle"
)

const tmpl = `paquet principal

tapez {{.StructName}} structure {
{{range .Fields}} {{.Name}} {{.Type}}
{{finir}}}
`

tapez Structure de champ {
    Chaîne de nom
    Tapez la chaîne
}

tapez Structure de données {
    Chaîne NomStruct
    Champs []Champ
}

fonction main() {
    données := Données{
        Nom de la structure : "Utilisateur",
        Champs : []Champ{
            {Nom : "ID", Type : "int"},
            {Nom : "Nom", Type : "chaîne"},
        },
    }

    t := template.Must(template.New("struct").Parse(tmpl))
    f, _ := os.Create("generated.go")
    reporter f.Close()

    _ = t.Execute(f, données)

    // Formate le code généré
    b, _ := os.ReadFile("generated.go")
    formaté, _ := format.Source(b)
    os.WriteFile("généré.go", formaté, 0644)
}

Exécutez ce programme et il génère un fichier generated.go formaté avec :

 paquet principal

tapez Structure utilisateur {
    ID entier
    Chaîne de nom
}

Meilleures pratiques

  • Gardez le code généré séparé : placez les fichiers générés dans un répertoire dédié ou utilisez une convention de dénomination comme *_generated.go .
  • Régénérer en cas de modifications : utilisez des scripts ou CI/CD pour garantir que le code généré reste synchronisé.
  • Évitez de modifier manuellement les fichiers générés : ils seront écrasés.
  • Documentez le processus de génération : Ajoutez des commentaires ou un README expliquant comment régénérer le code.
  • Vérifier le code généré dans le contrôle de version : cela évite de nécessiter des outils de génération dans les versions de production.

Fondamentalement, l'écosystème de Go prend bien en charge la génération de code grâce à des conventions et des outils. Que vous utilisiez des outils existants ou que vous écriviez votre propre générateur, la clé est l'automatisation et la cohérence.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Le dossier ou le fichier a été ouvert dans un autre programme Le dossier ou le fichier a été ouvert dans un autre programme Sep 20, 2025 am 08:24 AM

Lorsque le fichier est occupé, vérifiez d'abord et fermez les programmes pertinents et essayez de redémarrer l'ordinateur; S'il n'est pas valide, utilisez le gestionnaire de tâches, le moniteur de ressources ou le processus de processus pour localiser le processus occupé et le terminer avec force en terminant la commande task ou taskkill; Pour la prévention, vous devez développer de bonnes habitudes de fonctionnement, éviter de prévisualiser ou fonctionner directement sur des lecteurs mobiles / réseau et tenir le logiciel à jour.

BTC est 'digérer les tendances futures du marché à l'avance': 5 points de bitcoin les plus remarquables cette semaine BTC est 'digérer les tendances futures du marché à l'avance': 5 points de bitcoin les plus remarquables cette semaine Sep 20, 2025 pm 01:39 PM

Table des matières à mesure que les marchés financiers traditionnels se récupèrent, la volatilité du bitcoin a considérablement augmenté. L'attente des taux d'intérêt de la Fed est devenue l'objet du marché. Le pic du marché haussier du Bitcoin peut ne plus être "à quelques semaines. Binance a vu un signal d'achat à grande échelle. Les ETF continuent d'absorber le BTC nouvellement extrait. Les investisseurs de Bitcoin (BTC) suivent de près les tendances du marché alors que les actifs cryptographiques entrent dans la fenêtre de décision de taux d'intérêt de la Fed. Au début de cette semaine, les taureaux doivent franchir le niveau de résistance important de 117 000 $ pour continuer leur tendance à la hausse. L'attention mondiale est axée lors de la réunion de la Réserve fédérale de mercredi, et il est généralement prévu qu'il inaugurera la baisse de premier taux en 2025. Un modèle de prix BTC exact passé montre que des sommets de tous les temps peuvent naître au cours des prochaines semaines. Le carnet de commandes de Binance révèle des signes d'un afflux d'achat important au cours du week-end. La semaine dernière, le montant de la BTC achetée par les institutions par le biais de ETF a atteint les mineurs

Qu'est-ce que la monnaie USDH? Comment ça marche? Analyse complète du nouveau stablecoin hyperliquide Qu'est-ce que la monnaie USDH? Comment ça marche? Analyse complète du nouveau stablecoin hyperliquide Sep 17, 2025 pm 04:39 PM

Source: PolyMarket le vendredi 5 septembre 2025, Hyperliquide, qui occupe actuellement une position de premier plan absolu dans les échanges dérivés décentralisés, a annoncé qu'il cherchait à émettre un "hyperliquide hyperliquide, cohérent avec les intérêts d'Hyperliquide et la stablécoin de Dollar US conforme" et invite l'équipe à soumettre des propositions. Le lancement de la nouvelle stablecoin USDH d'Hyperliquide a déclenché une concurrence féroce entre les fabricants de marchés. Les principaux acteurs tels que Paxos, Sky et FraxFinance ont tous rejoint la compétition pour émettre l'USDH, mais les Nativemarkets les moins connus sont à l'avant-garde. À mesure que l'adoption augmente, l'approvisionnement en liquidité

Où trouver des dossiers Où trouver des dossiers Sep 20, 2025 am 07:57 AM

Le moyen le plus direct est de rappeler l'emplacement de stockage, généralement dans des dossiers tels que le bureau, les documents, les téléchargements, etc.; S'il ne peut être trouvé, vous pouvez utiliser la fonction de recherche système. Le fichier "manquant" est principalement dû à des problèmes tels que la non-assistance du chemin d'enregistrement, l'écart de mémoire du nom, la cachette de fichier ou la synchronisation du cloud. Suggestions de gestion efficaces: Classifier par projet, temps et type, faites bon usage de l'accès rapide, propres et archives régulièrement et standardiser la dénomination. Windows Recherche et recherche via File Explorer and Task Barar, tandis que MacOS s'appuie sur Finder et Spotlight, ce qui est plus intelligent et plus efficace. La maîtrise des outils et le développement de bonnes habitudes est la clé.

Quelle est la monnaie Ethereum (eth)? Prévisions des prix ETH 2025-2030 Quelle est la monnaie Ethereum (eth)? Prévisions des prix ETH 2025-2030 Sep 17, 2025 pm 04:42 PM

Répertoire Qu'est-ce que Ethereum? Pourquoi sa prédiction est-elle pertinente? Faits saillants du prix de l'ETH lié aux améliorations clés: facteurs clés affectant les prix de l'ETH Prévision du réseau Technologie Progress Supply et Dynamics Dynamics Demande institutionnelle Macro Bondage ETH Prévision pour 2025: Qu'est-ce que vous attendez avec impatience? Que s'est-il passé en 2026 Prévision d'ETH: tendance à moyen terme 2030 Prévisions Ethereum: Perspectives à long terme Comment analyserons-nous les prévisions de prix de l'ETH Conclusions comparatives d'Ethereum avec d'autres crypto-monnaies importantes: l'avenir d'Ethereum et ses prévisions de prix Comment négocier Ethereum? Questions fréquemment posées quels facteurs ont un impact

Qu'est-ce que la Somnia (Somi) monnaie? Introduction aux tendances récentes des prix et aux perspectives futures Qu'est-ce que la Somnia (Somi) monnaie? Introduction aux tendances récentes des prix et aux perspectives futures Sep 17, 2025 am 06:18 AM

Répertoire Qu'est-ce que la Somnia (Somi)? Performance des prix et tendances du marché: volatilité à court terme et avantages techniques potentiels à long terme: pourquoi la Somnia peut-elle défier la couche traditionnelle1? Perspectives futures: 2025-2030 Prévision des prix Conclusion: Opportunités de contenu de Somnia et de contenu SEO Somnia (SOMI) est une token de blockchain de couche haute performance lancée en septembre 2025. Elle a récemment attiré beaucoup d'attention du marché en raison de ses fluctuations de prix et de l'innovation technologique. Au 12 septembre 2025, les données d'échange de GATE ont montré que Somi Price était temporairement à 1,28 $, bien qu'il ait un recul du sommet historique de 1,90 $, il était toujours meilleur que le principal.

Bonne nouvelle: la plus grande société de portefeuille de devises de la Chine prévoit d'augmenter sa position dans Bitcoin grâce à une émission supplémentaire de 500 millions de dollars en actions Bonne nouvelle: la plus grande société de portefeuille de devises de la Chine prévoit d'augmenter sa position dans Bitcoin grâce à une émission supplémentaire de 500 millions de dollars en actions Sep 20, 2025 pm 01:03 PM

Informations clés du catalogue: NextTechnology est devenu le 15e plus grand détenteur de bitcoin au niveau de l'entreprise au monde. La stratégie s'est fermement classée en premier dans la liste mondiale de détention des devises d'entreprise avec 636 505 BTC. NextTtechnologyholding - La société cotée en Chine avec le plus de Bitcoin Holdings, prévoit de lever jusqu'à 500 millions de dollars américains grâce à l'émission publique d'actions ordinaires pour augmenter encore ses participations en BTC et soutenir la disposition stratégique d'autres sociétés. Informations clés: NextTtechnology prévoit de lever 500 millions de dollars pour le financement

La dernière version de Google Earth est utilisée en ligne_ultra-claire 3D Globe sans installation La dernière version de Google Earth est utilisée en ligne_ultra-claire 3D Globe sans installation Sep 16, 2025 pm 12:39 PM

La dernière version de Google Earth Online Access est https://earth.google.com/web/, qui prend en charge les images de satellite globale à haute affinition, le terrain 3D, le panorama de la rue et la backtracking d'images historiques. Il peut fonctionner en douceur dans le navigateur sans téléchargement, et peut synchroniser la collection et les points de repère personnalisés via votre compte.

See all articles