Maison > développement back-end > Golang > le corps du texte

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

王林
Libérer: 2024-02-09 16:15:09
avant
586 Les gens l'ont consulté

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

go.work est :

go 1.19

use (
    ./example/hello
    ./hello
)
Copier après la connexion

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

module github.com/example/hello

go 1.19
Copier après la connexion

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

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

Pour le répertoire "bonjour":

module github.com/zhaoyi0113/go-workspace/hello
Copier après la connexion

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

require (
    github.com/zhaoyi0113/go-workspace/example xxxx
)
Copier après la connexion

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

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}
Copier après la connexion
<小时/>

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

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!

Étiquettes associées:
source:stackoverflow.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!