Maison > développement back-end > Golang > Comment organiser efficacement le code Go à l'aide de packages internes avec des modules ?

Comment organiser efficacement le code Go à l'aide de packages internes avec des modules ?

Susan Sarandon
Libérer: 2024-12-25 14:12:24
original
981 Les gens l'ont consulté

How to Effectively Organize Go Code Using Internal Packages with Modules?

Comprendre les packages internes et leur utilisation

Question :

Comment organiser efficacement le code Go à l'aide de packages "internes" ?

Initiale Problème :

Bien que le projet soit placé en dehors de GOPATH, l'importation de packages internes depuis main.go échoue, à moins que le chemin relatif ne soit utilisé (par exemple, "./internal/foo|bar").

Introduction des modules :

Avec l'introduction des modules dans Go v1.11 et ci-dessus, placer le projet dans $GOPATH/src n'est plus nécessaire. Au lieu de cela, vous devez créer un fichier go.mod pour spécifier l'emplacement de chaque module.

Exemple :

Considérez la structure de projet suivante :

project/
  go.mod
  main.go

  internal/
    bar/
      bar.go
      go.mod
    foo/
      foo.go
      go.mod
Copier après la connexion

Fichiers go.mod :

Les fichiers go.mod pour les packages internes sont simple :

module bar

go 1.14
Copier après la connexion
module foo

go 1.14
Copier après la connexion

Code dans les packages internes :

// bar.go
package bar

import "fmt"

// Bar prints "Hello from Bar"
func Bar() {
    fmt.Println("Hello from Bar")
}

// foo.go
package foo

import "fmt"

// Foo prints "Hello from Foo"
func Foo() {
    fmt.Println("Hello from Foo")
}
Copier après la connexion

main.go :

// main.go
package main

import (
    "internal/bar"
    "internal/foo"
)

func main() {
    bar.Bar()
    foo.Foo()
}
Copier après la connexion

Projet go.mod Fichier :

Le projet go.mod Le fichier informe Go sur les packages internes et leurs emplacements :

module project

go 1.14

require internal/bar v1.0.0
replace internal/bar => ./internal/bar
require internal/foo v1.0.0
replace internal/foo => ./internal/foo
Copier après la connexion

Remarques importantes :

  • Les noms dans la section require sont destinés à l'usage interne de Go et peut être arbitraire.
  • Les numéros de version dans la section require n'ont pas d'importance dans ce contexte.
  • Les lignes de remplacement spécifient où Go peut trouver les packages internes.

Exécution :

L'exécution du fichier main.go imprimera désormais :

Hello from Bar
Hello from Foo
Copier après la connexion

Cet exemple montre comment utiliser efficacement des packages internes dans un projet Go à l'aide de modules.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal