Bibliothèque standard Go (Golang) : aperçu complet

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

Bibliothèque standard Go (Golang) : aperçu complet



Le langage Go (Golang), développé chez Google, est réputé pour sa concision, ses hautes performances et son support intégré de la concurrence. Cependant, l'une de ses principales "superforces" est sa bibliothèque standard puissante et bien conçue. Contrairement à de nombreux autres langages où il est nécessaire d'ajouter des dépendances tierces pour résoudre des tâches de base, Go fournit tout le nécessaire "prêt à l'emploi". Dans cet article, nous allons réaliser un aperçu complet des packages clés de la bibliothèque standard Go qui seront utiles à chaque développeur.



1. Entrées-sorties et travail avec les fichiers : packages io, os, bufio



Le package io est le fondement de toutes les opérations d'entrée-sortie. Ses interfaces io.Reader et io.Writer sont parmi les abstractions les plus importantes en Go. En fait, toute source de données (fichier, connexion réseau, chaîne de caractères) peut être représentée comme un Reader, et tout récepteur comme un Writer.



Le package os fournit des fonctions pour interagir avec le système d'exploitation : ouverture/création de fichiers, lecture de répertoires, travail avec les variables d'environnement.



Le package bufio ajoute une mise en mémoire tampon, ce qui accélère considérablement la lecture et l'écriture de grands volumes de données.



package main

import ( "bufio" "fmt" "os")

func main() { // Ouvrir un fichier pour la lecture file, err := os.Open("example.txt") if err != nil { panic(err) } defer file.Close()

// Créer un scanner tamponné scanner := bufio.NewScanner(file) for scanner.Scan() { fmt.Println(scanner.Text()) }

if err := scanner.Err(); err != nil { fmt.Fprintln(os.Stderr, "Erreur de lecture :", err) }}


2. Travail avec le texte et le formatage : packages strings, fmt, strconv



Le package strings contient des centaines de fonctions utiles pour travailler avec les chaînes de caractères : recherche, remplacement, division, concaténation, suppression d'espaces et bien plus encore. Le package strconv est responsable de la conversion des chaînes en nombres (et vice versa), ainsi que de l'analyse des valeurs booléennes.



Le package fmt est le "couteau suisse" pour la sortie formatée. Il implémente les fonctions Printf, Sprintf et Fprintf, qui fonctionnent avec tous les types implémentant l'interface Stringer.



package main

import ( "fmt" "strconv" "strings")

func main() { // Division d'une chaîne parts := strings.Split("a,b,c", ",") fmt.Println(parts) // [a b c]

// Conversion d'une chaîne en nombre num, _ := strconv.Atoi("42") fmt.Printf("Nombre : %d", num) // Nombre : 42

// Formatage avec largeur de champ fmt.Printf("|%10s|%5d|", "Bonjour", 123)}


3. Réseau et HTTP : packages net, net/http



Le package net fournit des primitives de bas niveau pour travailler avec TCP/UDP, DNS et les adresses IP. Mais la véritable "star" est le package net/http. Il permet de créer des serveurs et clients HTTP complets sans aucune dépendance tierce.



Grâce au http.ServerMux intégré et à l'approche middleware, vous pouvez facilement router les requêtes, traiter le JSON, gérer les cookies et les sessions. La bibliothèque standard Go est utilisée en production par des géants tels que Docker, Kubernetes et Dropbox.



package main

import ( "encoding/json" "fmt" "net/http")

type Response struct { Message string `json:"message"`}

func helloHandler(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodGet { http.Error(w, "Méthode non prise en charge", http.StatusMethodNotAllowed) return }

resp := Response{Message: "Bonjour le monde !"} w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(resp)}

func main() { http.HandleFunc("/api/hello", hello

Recommendations