Importation de paquets locaux en Go : guide pas à pas avec code

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

Pourquoi l'importation de paquets locaux en Go soulève-t-elle autant de questions ?

\n\n

Si vous avez déjà essayé d'organiser du code Go dans des fichiers et dossiers séparés, vous avez probablement rencontré une erreur comme could not import "myproject/utils". C'est l'un des problèmes les plus courants chez les développeurs Go débutants. Sur Stack Overflow, la question "How to import local packages in go?" a recueilli des milliers de vues — et ce n'est pas sans raison.

\n\n

Contrairement à Python, où il suffit de placer un fichier à côté et d'écrire import mymodule, Go exige une structure claire et une configuration correcte des modules. Mais une fois que vous maîtrisez ce mécanisme, vous comprendrez à quel point il est élégant. Éclaircissons cela une fois pour toutes.

\n\n

Brève théorie : comment Go comprend les paquets

\n\n

Avant d'écrire du code, retenez trois principes clés :

\n\n
    \n
  • Go est un langage avec une structure modulaire stricte. Chaque répertoire est un paquet (package).
  • \n
  • Le nom du paquet n'est pas obligé de correspondre au nom du dossier, mais il est fortement recommandé de le faire pour la lisibilité.
  • \n
  • L'importation de paquets locaux depuis 2019 se fait via les modules (Go modules). Oubliez GOPATH — utilisez go mod.
  • \n
\n\n

Passons maintenant à la pratique.

\n\n

Étape 1 : Créer un projet avec un module

\n\n

Ouvrez un terminal et créez un nouveau dossier pour votre projet :

\n\n
mkdir go-local-imports\ncd go-local-imports\n
\n\n

Initialisez maintenant le module. Le nom du module peut être quelconque, mais il est logique d'utiliser un chemin unique (par exemple, un lien vers un dépôt) :

\n\n
go mod init github.com/votre-nom-utilisateur/go-local-imports\n
\n\n

Après cette commande, un fichier go.mod apparaîtra dans le dossier. C'est lui qui gérera les dépendances — à la fois locales et externes.

\n\n

Étape 2 : Créer un paquet local

\n\n

Créons un dossier utils dans le projet. À l'intérieur, un fichier math.go :

\n\n
mkdir utils\ncd utils\ntouch math.go\n
\n\n

Ouvrez utils/math.go et écrivez :

\n\n
package utils\n\n// Add retourne la somme de deux entiers\nfunc Add(a, b int) int {\n    return a + b\n}\n
\n\n

Notez : la fonction Add est écrite avec une majuscule. En Go, cela signifie qu'elle est exportée (publique). Si vous écrivez add, elle sera privée et inaccessible depuis d'autres paquets.

\n\n

Étape 3 : Importer et utiliser le paquet local

\n\n

Revenez à la racine du projet et créez main.go :

\n\n
cd ..\ntouch main.go\n
\n\n

Contenu de main.go :

\n\n
package main\n\nimport (\n    "fmt"\n    "github.com/votre-nom-utilisateur/go-local-imports/utils"\n)\n\nfunc main() {\n    result := utils.Add(3, 5)\n    fmt.Println("Somme :", result)\n}\n
\n\n

Exécutez maintenant le programme :

\n\n
go run main.go\n
\n\n

Vous devriez voir :

\n\n
Somme : 8\n
\n\n

Tout fonctionne ! Mais si vous avez obtenu une erreur, lisez la section suivante.

\n\n

Erreurs typiques et leurs solutions

\n\n

Erreur 1 : "package is not in GOROOT"

\n\n

Vous voyez quelque chose comme :

\n
package myproject/utils is not in GOROOT (/usr/local/go/src/myproject/utils)
\n\n

Cause : Vous essayez d'importer un paquet sans module. Go le cherche dans la bibliothèque standard, pas dans votre projet.

\n

Solution : Assurez-vous qu'il y a un fichier go.mod à la racine du projet. Sinon, exécutez go mod init nom-du-module.

\n\n

Erreur 2 : "undefined: utils.Add"

\n\n

Cause : La fonction est écrite en minuscule (privée), ou vous avez importé le paquet mais n'utilisez pas son nom.

\n

Solution : Vérifiez que toutes les fonctions nécessaires sont exportées (avec une majuscule) et que vous y accédez avec

Blogs

Book Recommendations