Maison > développement back-end > Golang > `//go:build vs // build : quelle directive de compilation conditionnelle devriez-vous utiliser dans Go ?`

`//go:build vs // build : quelle directive de compilation conditionnelle devriez-vous utiliser dans Go ?`

Patricia Arquette
Libérer: 2024-12-10 11:08:18
original
265 Les gens l'ont consulté

`//go:build vs //  build: Which Conditional Compilation Directive Should You Use in Go?`

//go:build vs // build : une nouvelle ère dans la compilation conditionnelle

Le dilemme

Considérez le Extrait de code Go suivant :

//go:build (386 || amd64 || amd64p32) && gccgo
// +build 386 amd64 amd64p32
// +build gccgo

package cpu
Copier après la connexion

En tant que balise de build, // build semblait suffire. Pourquoi //go:build a-t-il été explicitement spécifié ? Et pourquoi est-il difficile de trouver de la documentation pour //go:build alors que // build a une documentation complète ?

Go 1.18 : Un nouveau chemin

La nouvelle directive / /go:build est désormais l'approche de compilation conditionnelle préférée, et la chaîne d'outils supprime activement les anciennes directives // build.

Go 1.17 : l'introduction de //go:build

//go:build a été introduit dans Go 1.17 pour remplacer // build. Il offre plusieurs avantages :

  • Cohérence avec d'autres directives Go (par exemple, //go:generate)
  • Prise en charge explicite des expressions booléennes (par exemple, //go:build foo && bar)
  • Compatibilité Go fmt, qui corrige automatiquement la directive placement

Coexistence et transition

Les deux directives coexistent pour une transition en douceur.

Changements de syntaxe et compatibilité

  • Go builds priorise //go:build over // build
  • //go:build seul n'est plus un échec de build
  • Les directives mal placées //go:build sont détectées et déplacées
  • Go fmt corrige //go:build expressions
  • Gofmt ajoute //go:build lorsque seulement // le build est présent
  • Gofmt met à jour // build pour correspondre //go:build
  • Go vétérinaire vérifie les écarts entre //go:build et // build

Aller de l'avant

/ /go:build est l'approche recommandée pour la compilation conditionnelle dans Go. Sa syntaxe améliorée, sa compatibilité Go fmt et sa coexistence avec // build assurent une transition transparente vers l'avenir du développement Go.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal