Maison  >  Article  >  développement back-end  >  Pouvez-vous importer tous les sous-packages dans un répertoire avec une importation générique dans Golang ?

Pouvez-vous importer tous les sous-packages dans un répertoire avec une importation générique dans Golang ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-19 12:50:02215parcourir

Can you import all subpackages in a directory with a wildcard import in Golang?

Importation de sous-packages dans Golang : l'importation de caractères génériques est-elle possible ?

Dans Golang, lors de l'importation de packages, les développeurs utilisent généralement la syntaxe d'importation "package_path" pour importer un package spécifique par son chemin complet. Cependant, il existe des scénarios dans lesquels les développeurs peuvent souhaiter importer tous les sous-packages dans un répertoire particulier.

Le problème : compiler un projet avec des sous-packages

Considérez la structure de répertoires suivante :

main.go
entities/
     bar/
         foo.go
         baz.go

Dans main.go, vous pourriez avoir le code suivant :

package main

import "entities/bar"

func main() {
    _ = bar.Get.Basic.Req.Headers{} // Assuming `bar` contains the nested structure
}

Lors de la compilation de ce projet avec go install main, vous rencontrerez une erreur indiquant qu'il n'y a aucun fichier Go dans le répertoire bar. En effet, Go ne prend pas en charge les importations avec caractères génériques, ce qui vous permettrait d'importer tous les sous-packages dans un répertoire.

Comprendre la syntaxe d'importation Golang

La syntaxe d'importation Golang vous oblige à spécifier le nom du package ou chemin du package que vous souhaitez importer. Ceci est nécessaire car l'identifiant du package importé (nom du package) est utilisé pour accéder à ses identifiants exportés. Par exemple, dans l'exemple ci-dessus, bar est le nom du package utilisé pour accéder à la structure imbriquée Get.Basic.Req.Headers.

Solutions alternatives

Étant donné que Go ne prend pas en charge directement les importations de caractères génériques, des solutions alternatives sont nécessaires pour obtenir des fonctionnalités similaires :

  • Installer des sous-packages individuels : Installer chaque sous-package individuellement en utilisant go install, en vous assurant que tous les sous-packages requis sont installés.
  • Utiliser Vendoring : Utilisez un gestionnaire de packages comme Go Modules ou Go Vendoring pour gérer les dépendances, y compris les sous-packages, au sein d'un projet privé.
  • Créer un package wrapper : Créer un package wrapper qui réexporte les sous-packages souhaités, vous permettant efficacement d'importer la fonctionnalité souhaitée sans importations directes de sous-packages.

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:
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