Maison >développement back-end >Golang >Comment charger des dépendances localement à l'aide 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.
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, hello
和 example
。 hello
依赖于 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
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!