Maison > développement back-end > Golang > Golang, problème de passage du chemin d'importation local au chemin d'importation distant

Golang, problème de passage du chemin d'importation local au chemin d'importation distant

王林
Libérer: 2024-02-09 08:27:38
avant
646 Les gens l'ont consulté

Golang, problème de passage du chemin dimportation local au chemin dimportation distant

L'éditeur php Baicao répondra à votre question sur le transfert du chemin d'importation local vers le chemin d'importation distant dans Golang. Dans le développement Golang, nous rencontrons souvent la situation de passer du chemin d'importation local au chemin d'importation distant, en particulier lorsque plusieurs personnes collaborent au développement ou à la migration d'un projet. Cet article détaillera comment gérer correctement ce problème pour garantir le bon fonctionnement de votre code. Nous allons jeter un coup d'oeil!

Contenu de la question

Je viens de commencer à diviser mon application en différents référentiels. Comme beaucoup de gens, j'ai du mal à gérer Go et à changer de référentiel. Mais il existe de nombreuses questions et réponses à ces questions, je ne les poserai donc pas ici.

Au lieu de cela, j'ai une question simple mais je n'arrive pas à la comprendre. Tous mes modules, puisqu'il s'agit d'une grosse application, ne sont que des références locales. Par exemple core/validateetc.

Déplacez le contenu vers plusieurs référentiels. Cela semblait poser des problèmes avec les références locales, j'ai donc modifié le chemin vers le chemin distant, par exemple gitlab.com/<group>/core.git/validate</group> comme plusieurs questions et réponses l'ont suggéré.

Cependant, cela posera un problème. Si gitlab.com/<group>/core.git/config</group> fait référence à gitlab.com/<group>/core.git/config</group> 引用了 gitlab.com/<group>/core.git/validate</group> 并不意味着 gitlab.com/ <group>/core.git/config</group> 现在指向 pck/mod/gitlab.com/... 中的某些内容或指向远程服务器,或者指向彼此以外的任何地方,就像它们只有像 core/validate cela ne signifie pas que gitlab.com/ <group> pointe maintenant vers quelque chose dans <code>pck/mod/gitlab.com/... ou vers le serveur distant, ou n'importe où ailleurs, comme quand ils n'ont que des chemins relatifs comme

? Quand je les change, cela ressemble à ceci car mon IDE (GoLand) affiche la référence introuvable.

go mod init 并从头开始重建 mod,但是 go mod tidy 不起作用,我不知道我是否也必须在 go.workJe n'ai pas essayé de faire

Changer le chemin distant fonctionne bien, mais maintenant je ne trouve tout simplement pas l'importation affichée dans l'EDI.

go get Il semble que si vous utilisez une référence distante pour apporter les modifications que vous apportez à votre code lors du développement, vous devez pousser les modifications afin qu'elles se trouvent là où les points de référence et peut-être le faire

Changer l'endroit où le chemin distant local est référencé, ce qui Cela semble être le cas. C'est une mauvaise façon de se développer, donc cela ne peut pas être correct.

Alors, comment ces chemins à distance fonctionnent-ils avec le développement, qu'est-ce qui me manque ?

Solution

Il existe plusieurs concepts qui peuvent prêter à confusion.

Un module est une collection de packages. Vous pouvez nommer votre module "mymodule", puis tous les packages sous "mymodule" seront nommés "mymodule/pkg1", "mymodule/pkg2/otherpkg", etc.

Ensuite, vous avez le chemin d’importation de votre package. Le chemin d'importation indique l'emplacement du package. Par exemple, si votre code source est dans "mymodule/pkg1" et que vous importez "mymodule/pkg2", alors il s'agit d'une référence au package sous le même module.

Imaginez maintenant que vous avez un autre module appelé "othermodule" sur "github.com/mygroup/othermodule". Vous importez un package dans ce module sous le nom "github.com/mygroup/othermodule/pkg1". Si "othermodule/pkg1" fait référence à "othermodule/pkg2", alors il importe toujours "othermodule/pkg2" car il se trouve dans le même module. Mais à partir de "mymodule/pkg1", vous l'importez sous "github.com/mygroup/othermodule/pkg2".

Le système de modules Go utilise des références de version d'autres modules. Lorsque vous incluez un package d'un module, la version spécifique du module est ajoutée à go.mod. Si vous transmettez de nouvelles modifications au module, vous devez mettre à jour la référence pour inclure ces modifications. C'est pourquoi il est préférable de ne pas diviser un projet étroitement couplé en plusieurs modules.

Si vous souhaitez développer plusieurs modules ensemble, utilisez la directive "replace" pour utiliser une copie locale du module au lieu de pointer vers la version sur le référentiel. 🎜

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