Go : L'arme du développement multiplateforme que vous n'avez pas appréciée

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Go : Comment oublier "Ça marche chez moi" et commencer à conquérir le monde

\n\n

Avez-vous déjà écrit un super script en Python, l'avez envoyé à un ami sous Windows, et il vous a répondu : "Il ne se lance pas chez moi, Python n'est pas installé" ? Ça vous dit quelque chose ? Bienvenue dans l'enfer des dépendances, des environnements virtuels et des versions d'interpréteurs. Imaginez maintenant : vous écrivez le code une fois, vous appuyez sur un bouton — et vous obtenez un binaire qui fonctionne sur Windows, Linux et macOS sans rien installer. Sans Python, sans Node, sans JVM.

\n\n

Ce n'est pas de la science-fiction. C'est le développement multiplateforme en Go — un langage créé pour résoudre précisément ces problèmes. Si vous codez en Python et que vous en avez assez de vous battre avec les dépendances, ou si vous cherchez simplement un outil pour créer des utilitaires rapides et portables, Go deviendra votre nouveau meilleur ami. Dans cet article, nous n'allons pas tourner autour du pot. Nous allons analyser des exemples concrets, montrer du code et expliquer comment faire fonctionner votre programme partout où il y a un processeur.

\n\n

Pourquoi Go est-il le choix idéal pour la multiplateforme ?

\n\n

Dans le monde du Golang multiplateforme, ce n'est pas une fonctionnalité, c'est un fondement. Contrairement à Python qui nécessite un interpréteur, ou à Java qui a besoin d'une machine virtuelle, Go se compile en code machine natif. Cela signifie que votre binaire contient tout ce qui est nécessaire pour fonctionner : le runtime, le ramasse-miettes et votre code. Pas de bibliothèques externes, pas de "pip install". Téléchargez et exécutez.

\n\n

Mais le principal, c'est la cross-compilation Go. Vous êtes sur un MacBook, vous écrivez du code, puis avec une seule commande vous compilez un fichier exécutable pour Windows, Linux, Raspberry Pi (ARM) ou même pour un vieux FreeBSD. Vous n'avez pas besoin d'une machine virtuelle ou de Docker pour la compilation. Une variable d'environnement — et c'est prêt.

\n\n

Pour un développeur Python, cela ressemble à de la magie, mais c'est simplement Go. Passons à la pratique.

\n\n

Écrire un utilitaire multiplateforme en Go

\n\n

Imaginons que nous devions écrire un programme simple mais utile : il collectera des informations sur le système (OS, architecture, nom d'hôte) et les sauvegardera dans un fichier JSON. C'est une tâche classique pour un DevOps ou un administrateur système. En Python, vous utiliseriez platform et json, mais en Go, c'est encore plus élégant.

\n\n

Étape 1 : Structure et importation

\n\n

Créez un fichier main.go. La première chose que nous allons faire est de définir la structure de données et d'utiliser les paquets runtime et os pour obtenir des informations sur le système. Notez que runtime.GOOS et runtime.GOARCH sont des constantes intégrées que Go connaît dès la phase de compilation.

\n\n
package main\n\nimport (\n    "encoding/json"\n    "fmt"\n    "os"\n    "runtime"\n)\n\ntype SystemInfo struct {\n    OS         string `json:"os"`\n    Arch       string `json:"arch"`\n    Hostname   string `json:"hostname"`\n    GoVersion  string `json:"go_version"`\n}
\n\n

Étape 2 : Collecte des informations

\n\n

Maintenant, écrivons une fonction qui collecte les données. Nous utilisons os.Hostname() — elle est multiplateforme et fonctionne sur tous les systèmes.

\n\n
func getSystemInfo() (SystemInfo, error) {\n    hostname, err := os.Hostname()\n    if err != nil {\n        return SystemInfo{}, fmt.Errorf("erreur lors de la récupération du hostname : %w", err)\n    }\n\n    return SystemInfo{\n        OS:        runtime.GOOS,\n        Arch:      runtime.GOARCH,\n        Hostname:  hostname,\n        GoVersion: runtime.Version(),\n    }, nil\n}
\n\n

Étape 3 : Écriture en JSON

\n\n

Finalisons notre programme : obtenons les informations, encodons-les en JSON et écrivons-les dans un fichier. Nous ajoutons également la gestion des erreurs — c'est une bonne pratique en développement multiplateforme en Go, car les chemins de fichiers diffèrent selon les OS.

\n\n
func main() {\n    info, err := getSystemInfo()\n    if err != nil {\n        fmt.Printf("Erreur : %v\\n", err)\n        os.Exit(1)\n    }\n\n                

Blogs

Book Recommendations