Go a été un langage important dans ma carrière personnelle. J'ai construit un adServer audio solide et un SSP avec lorsque j'étais CTO chez Soundcast. Go rend la mise en réseau et le parallélisme si faciles que c'est comme de la triche. Tout cela avec de très bonnes performances, ce qui était parfait pour le travail que nous devions faire.
Dans la première partie, nous avons dévoilé les fondamentaux de la phase de construction d'un logiciel. Dans cet article, nous rendrons cela plus pertinent à l’aide d’un langage qui occupe une place particulière dans mon cœur. En effet, même si les principes fondamentaux de la création de logiciels sont similaires dans toutes les langues, chaque écosystème linguistique possède ses propres outils et pratiques.
Sans plus tarder, explorons-les, avec un focus particulier sur Go.
Go, conçu par Google, adopte une approche de construction unique qui met l'accent sur la simplicité et la rapidité.
Go est livré avec une commande de construction. Cette commande compile les packages nommés par les chemins d'importation, ainsi que leurs dépendances, mais n'installe pas les résultats. Il génère un fichier exécutable.
Exemple:
go build main.go
L'une des fonctionnalités les plus utiles du compilateur Go est la possibilité d'effectuer une compilation croisée remarquablement facilement. Il ne vous reste plus qu'à définir les variables d'environnement GOOS et GOARCH pour cibler les plateformes souhaitées.
Exemple:
GOOS=windows GOARCH=amd64 go build main.go
Cela créera un exécutable pour Windows sous une architecture amd64.
Le mod Go est arrivé un peu tard car il a été introduit avec Go 1.11, mais il s'agit d'un système de gestion des dépendances intégré. Avant cela, nous devions placer tous nos projets Go dans un répertoire dédié sur notre machine appelé {$GOPATH}. Bien que cela ait fonctionné, le mod Go nous offre désormais plus de flexibilité, ce qui est génial !
L'utilisation est assez simple, comme tout dans Go.
Vous pouvez ajouter une compilation conditionnelle en utilisant des balises de build, mais la fonctionnalité la plus intéressante, à mon avis, est que Go met automatiquement en cache la sortie de build pour accélérer les builds suivantes (bien sûr, vous pouvez nettoyer le cache si nécessaire).
Intégrer des ressources
Si vous souhaitez inclure des fichiers statiques dans votre binaire, vous pouvez utiliser la directive //go:embed.
Détection de race
Go est génial en matière de parallélisme. Avec son système de goroutines et de canaux pour communiquer entre eux, les développeurs peuvent facilement répartir la charge de travail du logiciel sur différents cœurs. Mais il est aussi facile de tout gâcher et de créer des « courses ».
Une course aux données se produit lorsque deux goroutines accèdent simultanément à la même variable et qu'au moins l'un des accès est une écriture. Consultez le modèle de mémoire Go pour plus de détails.
Le compilateur Go peut vous aider à les trouver !
Utilisez le drapeau de course pour détecter les conditions de course :
go build -race main.go
Profilage et optimisation
L'une des principales choses que j'aime dans Go, ce sont ses performances. Ce langage donne des résultats solides sans trop d’effort. Mais si vous souhaitez aller plus loin, l'écosystème Go vous offre également de très bons outils pour mesurer vos performances et optimiser votre code.
Je ne vais pas entrer dans les détails, mais si vous souhaitez approfondir le sujet, je vous invite à lire cette pépite : https://www.practical-go-lessons.com/chap-34-benchmarks
Modes de construction personnalisés
Parfois, vous ne construisez pas un logiciel mais un plugin ou une bibliothèque, par exemple. L'équipe Go est là pour vous. Dans Go, vous pouvez définir le buildmode pour obtenir le résultat souhaité !
Comme vous pouvez le constater, Go fournit de nombreuses fonctionnalités dans son compilateur et son écosystème pour permettre aux développeurs de tirer le meilleur parti de la technologie Go.
Et c'est tout pour aujourd'hui. Je publierai un autre article cette semaine présentant les techniques de création pour TypeScript, alors abonnez-vous ou suivez si vous voulez être sûr de ne pas le manquer !
En attendant, bon codage !
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3