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
888 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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal