Apprenez à structurer correctement votre code Go : des projets à fichier unique aux packages, modules internes et imports appropriés, expliqués avec un exemple de calculatrice.Apprenez à structurer correctement votre code Go : des projets à fichier unique aux packages, modules internes et imports appropriés, expliqués avec un exemple de calculatrice.

Comment organiser vos projets Go comme un pro

\ Quand j'ai commencé à apprendre Go, l'une des premières questions que je me suis posée était :

"Comment structurer mon code ?"

Dans des langages comme C, il est courant de tout mettre dans un seul fichier, ou peut-être de séparer les fichiers d'en-tête et d'implémentation. Mais en Go, la structure du projet est très importante : elle affecte la facilité avec laquelle vous pouvez faire évoluer, tester et partager votre code. Dans cet article, je vais expliquer pourquoi la structure est importante, comment accéder aux fonctions de différents fichiers et quelles bonnes pratiques j'apprends au fur et à mesure.


Le programme Go le plus simple

Un programme Go peut exister entièrement dans un seul fichier :

package main  import "fmt"  func main() {   fmt.Println("2 + 2 =", 2+2) } 

Cela fonctionne bien pour "hello world" ou des expériences rapides.

Mais dès que vous ajoutez plus de fonctionnalités (soustraction, multiplication, division...), le fichier devient désordonné et difficilement évolutif.

C'est là que les packages et les dossiers de Go entrent en jeu.


Introduction aux packages

En Go, chaque fichier appartient à un package.

Par convention :

  • main → programme exécutable
  • autres (comme calculator, utils, etc.) → logique réutilisable

Voici comment j'ai divisé le projet de calculatrice :

calculator/ │ ├── main.go └── calculator/     └── operations.go 

\

  • main.go → gère l'entrée/sortie
  • operations.go → définit des fonctions comme Add, Subtract, etc.

Exemple : operations.go

package calculator  func Add(a, b int) int {   return a + b }  func Subtract(a, b int) int {   return a - b }  func Multiply(a, b int) int {   return a * b }  func Divide(a, b int) (int, error) {   if b == 0 {     return 0, fmt.Errorf("cannot divide by zero")   }   return a / b, nil } 

Exemple : main.go

package main  import (   "fmt"   "GoLang-progress/calculator" )  func main() {   fmt.Println("2 + 3 =", calculator.Add(2, 3))   fmt.Println("10 - 4 =", calculator.Subtract(10, 4))   fmt.Println("6 * 7 =", calculator.Multiply(6, 7))    result, err := calculator.Divide(8, 0)   if err != nil {     fmt.Println("Error:", err)   } else {     fmt.Println("8 / 0 =", result)   } } 

Remarquez comment main.go est maintenant propre : il ne se soucie pas des mathématiques elles-mêmes, juste de la façon de les utiliser.


Accéder aux fonctions de différents fichiers

Une question fréquente des débutants :

"Comment appeler une fonction d'un autre fichier ou dossier ?"

Dans mon dépôt, je l'ai structuré comme ceci :

calculator/ │ ├── main.go └── internal/     └── calc/         └── operations.go 

Ici, les fonctions mathématiques se trouvent sous internal/calc.

operations.go (à l'intérieur de internal/calc)

\

package calc  import "fmt"  func Add(a, b int) int {   return a + b }  func Divide(a, b int) (int, error) {   if b == 0 {     return 0, fmt.Errorf("cannot divide by zero")   }   return a / b, nil } 

main.go (importation de internal/calc)

\

package main  import (   "fmt"   "github.com/turman17/GoLang-progress/calculator/internal/calc" )  func main() {   fmt.Println("2 + 3 =", calc.Add(2, 3))    result, err := calc.Divide(10, 0)   if err != nil {     fmt.Println("Error:", err)   } else {     fmt.Println("10 / 2 =", result)   } } 

Pourquoi ce chemin d'importation est nécessaire

Votre importation doit correspondre à votre chemin de module de go.mod plus le chemin du dossier.

Dans votre dépôt, go.mod contient :

module github.com/turman17/GoLang-progress 

Le code de la calculatrice que vous voulez utiliser se trouve dans le dossier :

calculator/internal/calc 

Donc le chemin d'importation complet est :

github.com/turman17/GoLang-progress/calculator/internal/calc 

Quelques notes importantes

  • Nom du dossier ≠ nom du package → Le dossier est internal/calc, mais le package à l'intérieur est déclaré comme package calc.
  • Les importations utilisent le chemin du module → Commencez toujours par github.com/... si c'est dans votre go.mod.
  • Internal est spécial → Les packages sous /internal ne peuvent être importés que par du code à l'intérieur du même module.

Erreurs courantes et corrections

❌ import "GoLang-progress/calculator/internal/calc"

→ Organisation/nom d'utilisateur GitHub manquant. Doit utiliser le chemin complet.

❌ import "github.com/turman17/GoLang-progress/internal/calc"

→ Répertoire calculator manquant dans le chemin.

❌ go: module not found errors

→ Assurez-vous que go.mod contient module github.com/turman17/GoLang-progress et exécutez go mod tidy.


Liste de vérification rapide

  • go.mod a la ligne de module correcte
  • Le répertoire est calculator/internal/calc avec le package calc à l'intérieur
  • main.go importe github.com/turman17/GoLang-progress/calculator/internal/calc
  • Construire à partir de la racine du module :

\

go run ./calculator 

ou

go build ./calculator 

Mise à l'échelle de la structure

À mesure que les projets grandissent, vous verrez souvent ce modèle :

project-name/ │ ├── cmd/        → executables (main entrypoints) ├── internal/   → private code (not for external use) ├── pkg/        → reusable packages ├── api/        → API definitions (gRPC, OpenAPI, etc.) └── go.mod 

Pour les débutants, cela peut sembler excessif. Mais lorsque vous passez aux applications web, aux services ou aux outils MLOps, cette disposition devient essentielle.


Bonnes pratiques que j'apprends

  • Gardez les packages petits et ciblés
  • Utilisez des noms significatifs (calc, parser, storage)
  • Ne sur-ingéniez pas — commencez simplement, refactorisez plus tard
  • Évitez les dépendances circulaires (Go l'impose)

Leçons du projet Calculatrice

  • Séparer la logique (operations.go) du point d'entrée (main.go) facilite les tests.
  • La gestion des erreurs (comme la division par zéro) doit être explicite.
  • Les chemins d'importation sont vraiment importants — surtout lors de l'utilisation de internal.

Je continuerai à partager ce que j'apprends en explorant Go pour le MLOps et le développement backend. À suivre : la gestion des erreurs et les tests en Go.

\ 👉 Consultez mon dépôt ici : https://github.com/turman17/GoLang-progress

Et restez à l'écoute pour le prochain article !

Opportunité de marché
Logo de Wink
Cours Wink(LIKE)
$0.003088
$0.003088$0.003088
+3.10%
USD
Graphique du prix de Wink (LIKE) en temps réel
Clause de non-responsabilité : les articles republiés sur ce site proviennent de plateformes publiques et sont fournis à titre informatif uniquement. Ils ne reflètent pas nécessairement les opinions de MEXC. Tous les droits restent la propriété des auteurs d'origine. Si vous estimez qu'un contenu porte atteinte aux droits d'un tiers, veuillez contacter service@support.mexc.com pour demander sa suppression. MEXC ne garantit ni l'exactitude, ni l'exhaustivité, ni l'actualité des contenus, et décline toute responsabilité quant aux actions entreprises sur la base des informations fournies. Ces contenus ne constituent pas des conseils financiers, juridiques ou professionnels, et ne doivent pas être interprétés comme une recommandation ou une approbation de la part de MEXC.

Vous aimerez peut-être aussi

Ethereum Classic (ETC) teste un support critique avant un rebond explosif vers 120 $

Ethereum Classic (ETC) teste un support critique avant un rebond explosif vers 120 $

Ethereum Classic (ETC) est relativement stable autour de la fourchette de 12,7 $ à 12,8 $. Le prix est indiqué à environ 12,8 $ avec un volume sur 24 heures d'environ 57,9 M$. Ce
Partager
Tronweekly2026/01/20 06:00
Actions de Meta Platforms, Inc. (META) : Chute suite aux accusations du régulateur britannique concernant l'ignorance de publicités de jeux d'argent illégales

Actions de Meta Platforms, Inc. (META) : Chute suite aux accusations du régulateur britannique concernant l'ignorance de publicités de jeux d'argent illégales

TLDR L'action Meta s'est échangée près de 620 $ alors que la surveillance réglementaire s'intensifiait au Royaume-Uni. La UK Gambling Commission a accusé Meta d'ignorer les publicités de jeux d'argent illégaux. Les régulateurs
Partager
Coincentral2026/01/20 06:20
La difficulté du Mining de Bitcoin atteint un nouveau All-time High en septembre

La difficulté du Mining de Bitcoin atteint un nouveau All-time High en septembre

Le post La difficulté du Mining du Bitcoin atteint un nouveau sommet historique en septembre est apparu sur BitcoinEthereumNews.com. La difficulté du mining du Bitcoin (BTC), une métrique qui suit le défi relatif d'ajouter de nouveaux blocs au registre, a atteint un nouveau sommet historique de 142,3 billions vendredi. La difficulté de mining a atteint des sommets historiques successifs en août et septembre, stimulée par un afflux de puissance de calcul nouvellement déployée au cours des dernières semaines. Le hashrate du Bitcoin, la moyenne de la puissance de calcul totale sécurisant le protocole monétaire décentralisé, a également atteint un sommet historique de plus de 1,1 billion de hachages par seconde vendredi, selon CryptoQuant. La difficulté croissante du mining et le besoin constant de puissance de calcul énergivore et haute performance pour sécuriser le réseau rendent la concurrence plus difficile pour les mineurs individuels et les entreprises, soulevant des inquiétudes quant à la centralisation croissante du mining de Bitcoin. La difficulté du réseau Bitcoin a atteint un nouveau sommet historique en septembre. Source : CryptoQuant Connexe : Les actions de mining de Bitcoin surpassent le BTC alors que les investisseurs parient sur les pivots de l'IA Les sociétés cotées en bourse font face à la pression des gouvernements et des fournisseurs d'infrastructure énergétique Les petits mineurs et même les sociétés cotées en bourse font face à une concurrence croissante des gouvernements, qui ont accès à des ressources énergétiques gratuites, et des fournisseurs d'infrastructure énergétique qui peuvent intégrer verticalement le mining de Bitcoin dans leurs opérations commerciales. Plusieurs gouvernements minent déjà du Bitcoin ou explorent le mining avec de l'énergie excédentaire ou de ruissellement, notamment le Bhoutan, le Pakistan et El Salvador. En mai, le gouvernement pakistanais a annoncé des plans pour allouer 2 000 mégawatts (MW) d'énergie excédentaire au mining de Bitcoin, dans le cadre du pivot réglementaire du pays embrassant les cryptomonnaies et les actifs numériques. Les fournisseurs d'énergie de l'État américain du Texas intègrent également le mining de Bitcoin dans leur infrastructure pour équilibrer les charges électriques en collaboration avec le Conseil de fiabilité énergétique du Texas (ERCOT). Un graphique montrant la réduction de l'utilisation d'énergie des mineurs de crypto au Texas pendant les périodes de demande de pointe de 2021-2023. Source : ERCOT Les réseaux électriques peuvent souffrir d'un...
Partager
BitcoinEthereumNews2025/09/21 05:07