Maison >développement back-end >Golang >Puis-je regrouper une bibliothèque Go et une CLI dans le même répertoire ?

Puis-je regrouper une bibliothèque Go et une CLI dans le même répertoire ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-02 20:09:15663parcourir

Can I Bundle a Go Library and CLI in the Same Directory?

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!

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