Pouvez-vous regrouper la bibliothèque et la CLI dans le même répertoire ?
Avoir un répertoire avec des packages séparés pour une bibliothèque (fonctions exportées) et un l'interface de ligne de commande (exécutable CLI) soulève la question de savoir si c'est pratique. Le problème survient lorsque le compilateur go nécessite à la fois un package avec une fonction « principale » pour l'exécution du programme et la bibliothèque avec ses fonctions.
Le problème : plusieurs packages
Comme l'illustre l'exemple fourni, si "main" et le package de bibliothèque coexistent dans le même répertoire, le compilateur go se plaint de trouver plusieurs packages dans le même répertoire. répertoire.
La solution : packages imbriqués
Au lieu de conserver les packages dans le même répertoire, une solution simple consiste à créer un nouveau sous-répertoire dans le répertoire parent pour héberger soit la bibliothèque, soit le package CLI. N'oubliez pas de mettre à jour vos importations pour refléter le nouvel emplacement du package.
Exemple avec des packages imbriqués
Dans l'exemple révisé ci-dessous, le package "a" est déplacé vers un nouveau sous-répertoire "a" au sein du répertoire "so-multipack" :
so-multipack/ a/ a.go main.go
Mise à jour main.go
package main import "../so-multipack/a" func main() { a.Hello() }
Mise à jour de a/a.go
package a import "fmt" func Hello() { fmt.Println("hello from a") }
Compilation réussie
En utilisant la structure de répertoires mise à jour, les commandes go s'exécutent désormais avec succès :
go run main.go # Output: hello from a go build # Creates a "so-multipack" executable
En imbriquant les packages dans le même répertoire parent, nous pouvons réussir à accueillir à la fois la bibliothèque et l'exécutable CLI.
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!