{}const=>[]async()letfn</>var
DéveloppementBackendPratique

Votre premier script en Go en 10 minutes : CLI minimale et compilation 🐹

Vous en avez assez de lire 500 pages de documentation ? Nous écrivons un outil CLI de travail sur Go à partir de zéro, de go mod init au binaire fini. Sans eau, avec des memes et une compilation croisée.

К

Kodik

Auteur

5 min de lecture

« Pourquoi Go ? » m'a-t-on demandé.
« Parce que mon script Python a pris plus de temps à charger que le temps que j'ai mis à préparer le café », ai-je répondu.

D'accord, soyons honnêtes. Vous avez probablement déjà entendu parler de Go cinq cents fois. On vous a dit qu'il était rapide, que Docker, Kubernetes et la moitié de tout ce qui tourne en production y sont écrits. Vous avez hoché la tête, puis ouvert le VS Code habituel avec un autre projet JavaScript.

Étape 0 : Installation (si ce n'est pas déjà fait)

Allez sur go.dev/dl et téléchargez le programme d'installation. Ou, si vous êtes une personne cultivée :

# macOS
brew install go

# Ubuntu/Debian
sudo apt install golang-go

# Windows (via scoop)
scoop install go

Vérification :

$ go version
go1.22.x (ou plus récent) signifie que tout va bien 👍

Si vous avez vu la version, félicitations, vous êtes déjà plus loin que 90 % des personnes qui « allaient essayer Go ».

🔥 100 000+ étudiants déjà avec nous

Marre de lire la théorie ?
Il est temps de coder !

Kodik — une appli où tu apprends à coder par la pratique. Mentor IA, leçons interactives, projets réels.

🤖 IA 24/7
🎓 Certificats
💰 Gratuit
🚀 Commencer
Ont rejoint aujourd'hui

Étape 1 : Créer un projet

mkdir my-first-go-cli
cd my-first-go-cli
go mod init my-first-go-cli

go mod init est un analogue de npm init ou pip init. Crée un fichier go.mod qui suit les dépendances. Oui, dans Go, le système modulaire est prêt à l'emploi. Oui, ça marche. Oui, j'ai été surpris aussi.

Étape 2 : Écrire le code (la partie la plus intéressante)

Créons le fichier main.go :

package main

import (
    "fmt"
    "os"
    "strings"
    "time"
)

func main() {
    args := os.Args[1:]

    if len(args) == 0 {
        fmt.Println("🐹 Hi! I'm your first Go-CLI!")
        fmt.Println()
        fmt.Println("Use:")
        fmt.Println("  greet <name>     — say hello")
        fmt.Println("  time            — current time")
        fmt.Println("  reverse <text> — flip the line")
        fmt.Println()
        fmt.Println("Example: my-first-go-cli greet Alex")
        return
    }

    command := strings.ToLower(args[0])

    switch command {
    case "greet":
        if len(args) < 2 {
            fmt.Println("❌ Enter a name! Example: greet Gofer")
            return
        }
        name := strings.Join(args[1:], " ")
        fmt.Printf("👋 Hi %s! Welcome to the world of Go!\n", name)

    case "time":
        now := time.Now()
        fmt.Printf("🕐 Now: %s\n", now.Format("15:04:05 02.01.2006"))
        fmt.Printf("📅 Day of the week: %s\n", russianWeekday(now.Weekday()))

    case "reverse":
        if len(args) < 2 {
            fmt.Println("❌ Specify the text! Example: reverse Hello")
            return
        }
        text := strings.Join(args[1:], " ")
        fmt.Printf("🔄 Result: %s\n", reverseString(text))

    default:
        fmt.Printf("🤷 Unknown command: %s\n", command)
        fmt.Println("Run without arguments to see help.")
    }
}

func reverseString(s string) string {
    runes := []rune(s)
    for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
        runes[i], runes[j] = runes[j], runes[i]
    }
    return string(runes)
}

func russianWeekday(w time.Weekday) string {
    days := map[time.Weekday]string{
        time.Monday:    "Monday",
        time.Tuesday:   "Tuesday",
        time.Wednesday: "Wednesday",
        time.Thursday:  "Thursday",
        time.Friday:    "Friday",
        time.Saturday:  "Saturday",
        time.Sunday:    "Sunday",
    }
    return days[w]
}

Que se passe-t-il ici (pas de panique) :

  • package main — point d'entrée. Dans Go, tout commence par main.

  • os.Args — arguments de la ligne de commande. os.Args[0] — nom du programme, [1:] — tout le reste.

  • switch est comme switch dans d'autres langages, mais sans break. Oui, Go ne tombe pas plus loin automatiquement. Merci, Go. 🙏

  • []rune - pour un retournement correct de la ligne avec Unicode (sinon le cyrillique se dissoudra).

Étape 3 : Lancer

# Il suffit de lancer
go run main.go

# Avec les équipes
go run main.go greet Гофер
go run main.go time
go run main.go reverse "Go is a thrill"

Ça marche. Dès la première fois. Sans node_modules sur 500 Mo. Sans environnement virtuel. Il fonctionne simplement.

Étape 4 : Assembler le binaire 🔨

Et c'est là que la magie de Go commence :

go build -o mycli main.go

C'est tout. Un fichier. Un binaire. Aucune dépendance. Vous pouvez le transmettre à un ami et il fonctionnera sans avoir à installer Go, Python, Node.js ou quoi que ce soit d'autre.

Compilation croisée (bonus pour les utilisateurs avancés)

Vous voulez compiler sous Windows, en étant sur Mac ? Facile :

# Pour WindowsGOOS=windows GOARCH=amd64 go build -o mycli.exe main.go

# Pour LinuxGOOS=linux GOARCH=amd64 go build -o mycli-linux main.go

# Pour macOS (Apple Silicon)GOOS=darwin GOARCH=arm64 go build -o mycli-mac main.go

Deux variables d'environnement - et vous avez un binaire pour n'importe quelle plate-forme. Pas de Docker. Pas de CI/CD. Juste go build. Essayez de faire ça en Python, je vous attends. ☕

Où aller ensuite ?

  • flag — paquet intégré pour l'analyse des drapeaux (--name, --verbose)

  • cobra — bibliothèque pour les applications CLI sérieuses (kubectl est écrit dessus)

  • Routines et canaux — la raison pour laquelle tout le monde aime Go

  • net/http — écrire un serveur API en Go est plus facile que de commander une pizza

📱 Vous voulez améliorer vos compétences tous les jours ?

Si le sujet vous intéresse et que vous souhaitez apprendre la programmation avec la pratique — regarde dans l'application Kodik. Vous pouvez y résoudre des problèmes, suivre des cours interactifs et écrire du vrai code, et pas seulement regarder des vidéos (nous savons tous comment cela se termine 😅).

Et nous avons aussi Chaîne Telegram pour les développeurs — des messages utiles, des analyses de tâches, des aide-mémoire et des mèmes (où sans eux) sont régulièrement publiés. Plus de 2 000 développeurs sont déjà dans le sujet : c'est un excellent moyen de répéter le matériel et de garder votre cerveau en forme pendant que vous voyagez dans le métro ou attendez un déploiement.

Kodik + chaîne Telegram = combo pour ceux qui veulent grandir en tant que développeur, et pas seulement collecter des signets « à lire plus tard ». 🚀

Eh bien, votre bouilloire n'a pas encore bouilli ? Alors, nous avons réussi. Allez préparer du thé et écrire votre première goroutine, vous l'avez mérité. 🐹☕

🎯Arrête de reporter

Tu as aimé l'article ?
Place à la pratique !

Avec Kodik, tu ne lis pas seulement — tu codes immédiatement. Théorie + pratique = vraies compétences.

Pratique instantanée
🧠L'IA explique le code
🏆Certificat

Sans inscription • Sans carte