Maison  >  Article  >  développement back-end  >  Comment charger des dépendances localement à l'aide de Go Workspace ?

Comment charger des dépendances localement à l'aide de Go Workspace ?

王林
王林avant
2024-02-09 16:15:09605parcourir

Comment charger des dépendances localement à laide de Go Workspace ?

l'éditeur php Baicao vous présente comment utiliser go workspace pour charger des dépendances localement. Lors du développement de projets en langage Go, nous utilisons souvent diverses bibliothèques et dépendances tierces. Afin de faciliter la gestion et le chargement de ces dépendances, le langage Go fournit un puissant mécanisme d'espace de travail. En définissant le chemin de l'espace de travail et en utilisant la commande go mod, nous pouvons charger et gérer rapidement et facilement les dépendances requises pour le projet, améliorant ainsi l'efficacité du développement et la qualité du code. Examinons de plus près comment utiliser go workspace pour charger des dépendances localement.

Contenu de la question

J'ai un projet d'espace de travail go qui contient des modules go. Un module dépend d'un autre module dans le même espace de travail. Je souhaite que les dépendances soient résolues localement sans téléchargement depuis Internet.

J'ai deux modules, helloexamplehello 依赖于 example. Sa structure est :

example
  - go.mod
  - hello
     - go.mod
hello
  - go.mod
go.work

go.work est :

go 1.19

use (
    ./example/hello
    ./hello
)

Module hello 需要使用从 example -> hello 模块声明的函数。 example/hello下的go.mod c'est :

module github.com/example/hello

go 1.19

Quand je suis dans hello 目录下运行 go get github.com/example/hello, j'obtiens l'erreur :

go: module github.com/example/hello: git ls-remote -q origin in /Users/joey/go/pkg/mod/cache/vcs/85c69767672480b072ae4eaec76fbf39ef710d025b14e923dd131ac218c9034c: exit status 128:
    fatal: could not read Username for 'https://github.com': terminal prompts disabled
Confirm the import path was entered correctly.
If this is a private repository, see https://golang.org/doc/faq#git_https for additional information.

Il semble quego仍然想从github.com下载依赖项而不是查看本地worksapce。有没有办法强制 go Vérifiez d'abord le répertoire local ?

Le code complet est : https://github.com/zhaoyi0113/go-workspace

Solution

Le nom du module dans le fichier go.mod est lié à la structure du projet. Sinon, une dénomination aléatoire peut provoquer des conflits avec d'autres bibliothèques, ce qui rend difficile de savoir quelle bibliothèque extraire lors de la création de dépendances.

En d’autres termes, la structure des répertoires doit correspondre pour obtenir le code de GitHub. Par conséquent, changez le nom du module dans le fichier go.mod sous le répertoire "exemple" en :

module github.com/zhaoyi0113/go-workspace/example

Pour le répertoire "bonjour":

module github.com/zhaoyi0113/go-workspace/hello

Si le répertoire "hello" doit dépendre du module "exemple", importez-le comme suit :

require (
    github.com/zhaoyi0113/go-workspace/example xxxx
)

Ici, si vous avez créé une version, "xxxx" peut être le numéro de version. Sinon, vous pouvez utiliser le hachage de validation Git du code que vous avez transmis à GitHub. Vous pouvez trouver le hachage Git pour « exemple » sur la page du projet GitHub. Dans le répertoire "hello", exécutez la commande suivante :

go get github.com/zhaoyi0113/go-workspace/example@{git version prefix, which can be found on the GitHub project page}

Cependant, cette méthode vous permet uniquement d'obtenir le code qui a été poussé vers GitHub. Si vous souhaitez déboguer rapidement le développement localement, vous pouvez ajouter la directive "replace" au fichier go.mod :

replace github.com/zhaoyi0113/go-workspace/example => {local directory of your example}

Mise à jour

Il est recommandé d'utiliser l'approche package pour organiser la structure du projet, où les modules doivent être plus indépendants et généralement situés dans des référentiels différents.

.
├── example
│    ├── reverse
│    └── utils.go
├── hello
│    └── hello.go
├── go.mod
├── go.sum
└── main.go

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer