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
Libérer: 2024-12-06 16:28:13
original
956 Les gens l'ont consulté

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
Copier après la connexion

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

package main

import (
    "../myproject/a"
)

func main() {
    a.Hello()
}
Copier après la connexion

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

package a

import (
    "fmt"
)

func Hello() {
    fmt.Println("hello from a")
}
Copier après la connexion

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
Copier après la connexion

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!

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