Maison >développement back-end >Golang >Un projet Go peut-il avoir à la fois une bibliothèque et une CLI dans le même répertoire ?

Un projet Go peut-il avoir à la fois une bibliothèque et une CLI dans le même répertoire ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-06 16:28:13961parcourir

Can a Go Project Have Both a Library and a CLI in the Same Directory?

Deux packages peuvent-ils résider dans le même répertoire ?

Lors du développement de projets nécessitant à la fois une bibliothèque et une interface de ligne de commande (CLI), il est Il est courant de rencontrer des conflits entre deux packages existant dans le même répertoire. En raison de l'exigence du compilateur Go pour un package nommé "main" avec un "func main" comme point d'entrée, il semble impossible d'avoir des packages séparés pour la bibliothèque et la CLI.

Solution : Structure des packages imbriqués

Cependant, il existe une solution de contournement à ce problème en déplaçant les deux packages dans un nouveau dossier dans le même répertoire que le fichier "main.go". La clé est de s'assurer que le nouveau package est importé à partir du chemin correct dans "$GOPATH".

Exemple :

Considérez la structure de répertoires mise à jour :

whatever.io/
    myproject/
        a/                # New folder
            a.go
        main.go

Dans "main.go", importez le nouveau package depuis son chemin imbriqué :

package main

import (
    "../myproject/a"
)

func main() {
    a.Hello()
}

Dans "a.go", définissez les fonctions de la bibliothèque :

package a

import (
    "fmt"
)

func Hello() {
    fmt.Println("hello from a")
}

Construire et exécuter :

Maintenant, vous pouvez créer et exécuter le projet avec succès :

go run main.go
# Prints "hello from a"

go build
# Creates the executable without errors

Cette solution vous permet d'avoir à la fois une bibliothèque (package "a") et une CLI (package "main") dans le même répertoire, résolvant ainsi le conflit provoqué par la présence de deux packages avec le même nom dans le même répertoire.

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