Aller au contenu

Création et utilisation de packages#

Structure d'un package#

  • Un package en Go est une collection de fichiers source Go qui résident dans le même répertoire.
  • Tous les fichiers d'un même package doivent déclarer le même nom de package en tête du fichier.
  • Le nom du package est préférablement le même que le nom du répertoire contenant les fichiers source.
  • La structure d'un package peut comprendre des fichiers pour les définitions de types, les fonctions, les variables, les constantes, etc.
  • Chaque package peut avoir un fichier unique nommé doc.go où la documentation du package est écrite.

Déclaration d'un package#

  • Pour déclarer un package, la première ligne non-commentée d'un fichier source doit être package <nom-du-package>.
  • Le package main est spécial en Go. C'est le point d'entrée du programme. Le compilateur Go cherche une fonction main dans le package main pour démarrer l'exécution du programme.
  • Exemple de déclaration de package :
    package monpackage
    

Exportation de fonctions et de variables#

  • Les noms de fonctions, de variables et de types commençant par une majuscule sont exportés du package. Ils sont accessibles en dehors du package.
  • Les noms commençant par une minuscule sont privés au package. Ils ne peuvent pas être directement accessibles en dehors du package.
  • Exemple d'exportation d'une fonction :
    package monpackage
    
    // Cette fonction peut être appelée en dehors du package
    func MaFonctionExportee() {
        // code de la fonction
    }
    

Importation et utilisation de packages#

  • Pour utiliser un package, il faut l'importer à l'aide de la directive import.
  • Une fois importé, les fonctions, les variables et les types exportés peuvent être utilisés en préfixant leur nom par le nom du package.
  • Les packages standard de Go comme fmt ou os peuvent être importés directement. Pour les packages tiers, il faut utiliser le chemin complet.
  • Pour les projets plus conséquents, Go propose la notion de modules pour gérer les dépendances à plus grande échelle.
  • Exemple d'importation et d'utilisation de packages :
    package main
    
    import (
        "fmt"
        "monpackage"
    )
    
    func main() {
        fmt.Println("Appel de la fonction exportée :")
        monpackage.MaFonctionExportee()
    }
    

Dans le terminal, pour récupérer les packages tiers, vous pouvez utiliser la commande go get suivie de l'URL du dépôt du package. Par exemple : go get github.com/pkg/errors.