Golang, Problem beim Wechsel vom lokalen Importpfad zum Remote-Importpfad

王林
Freigeben: 2024-02-09 08:27:38
nach vorne
596 Leute haben es durchsucht

Golang, Problem beim Wechsel vom lokalen Importpfad zum Remote-Importpfad

php-Editor Baicao beantwortet Ihre Frage zur Übertragung vom lokalen Importpfad zum Remote-Importpfad in Golang. Bei der Golang-Entwicklung kommt es häufig vor, dass wir vom lokalen Importpfad zum Remote-Importpfad wechseln, insbesondere wenn mehrere Personen an der Entwicklung oder Projektmigration zusammenarbeiten. In diesem Artikel erfahren Sie, wie Sie dieses Problem richtig beheben, um sicherzustellen, dass Ihr Code reibungslos funktioniert. Lass uns einen Blick darauf werfen!

Frageninhalt

Ich habe gerade damit begonnen, meine Anwendung in verschiedene Repositorys aufzuteilen. Wie viele Menschen mache ich mir die Mühe, mit Go umzugehen und Repositorys zu ändern. Aber es gibt viele Fragen und Antworten auf diese Fragen, deshalb werde ich sie hier nicht stellen.

Stattdessen habe ich eine einfache Frage, die ich aber nicht verstehen kann. Da es sich um eine große Anwendung handelt, sind alle meine Module nur lokale Referenzen. Zum Beispiel core/validateusw.

Verschieben Sie Inhalte in mehrere Repositorys. Scheint Probleme mit lokalen Referenzen zu verursachen, daher habe ich den Pfad auf den Remote-Pfad geändert, z. B. gitlab.com/<group>/core.git/validate</group>, wie mehrere Fragen und Antworten vorgeschlagen haben.

Dies führt jedoch zu einem Problem. Wenn gitlab.com/<group>/core.git/config</group> auf 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 verweist, bedeutet dies nicht, dass gitlab.com/ <group> zeigt jetzt auf etwas in <code>pck/mod/gitlab.com/... oder auf den Remote-Server oder auf einen anderen Ort als den anderen, genau wie when Sie haben nur relative Pfade wie

? Wenn ich sie ändere, sieht es so aus, weil meine IDE (GoLand) anzeigt, dass die Referenz nicht gefunden wurde.

go mod init 并从头开始重建 mod,但是 go mod tidy 不起作用,我不知道我是否也必须在 go.workIch habe es noch nicht versucht.

Das Ändern des Remote-Pfads funktioniert einwandfrei, aber jetzt kann ich den in der IDE angezeigten Import einfach nicht finden.

go get Es sieht so aus, als müssten Sie, wenn Sie eine Remote-Referenz verwenden, um während der Entwicklung in Ihrem Code vorgenommene Änderungen vorzunehmen, die Änderungen so pushen, dass sie dort sind, wo die Referenzpunkte sind, und vielleicht auch tun.

Wechseln Sie dorthin, wo auf den lokalen Remote-Pfad verwiesen wird Scheint der Fall zu sein. Eine schlechte Entwicklungsweise und kann daher nicht richtig sein.

Wie funktionieren diese Remote-Pfade also mit der Entwicklung? Was fehlt mir?

Lösung

Es gibt mehrere Konzepte, die Verwirrung stiften können.

Ein Modul ist eine Sammlung von Paketen. Sie können Ihr Modul „mymodule“ nennen und dann werden alle Pakete unter „mymodule“ „mymodule/pkg1“, „mymodule/pkg2/otherpkg“ usw. genannt.

Dann haben Sie den Importpfad für Ihr Paket. Der Importpfad zeigt den Speicherort des Pakets. Wenn sich Ihr Quellcode beispielsweise in „mymodule/pkg1“ befindet und Sie „mymodule/pkg2“ importieren, ist dies ein Verweis auf das Paket unter demselben Modul.

Stellen Sie sich nun vor, Sie hätten ein weiteres Modul namens „othermodule“ auf „github.com/mygroup/othermodule“. Sie importieren ein Paket in dieses Modul als „github.com/mygroup/othermodule/pkg1“. Wenn „othermodule/pkg1“ auf „othermodule/pkg2“ verweist, wird trotzdem „othermodule/pkg2“ importiert, da es sich im selben Modul befindet. Aber aus „mymodule/pkg1“ importieren Sie es als „github.com/mygroup/othermodule/pkg2“.

Das Go-Modulsystem verwendet Versionsreferenzen von anderen Modulen. Wenn Sie ein Paket aus einem Modul einbinden, wird die spezifische Version des Moduls zu go.mod hinzugefügt. Wenn Sie neue Änderungen an das Modul übertragen, müssen Sie die Referenz aktualisieren, um diese Änderungen einzuschließen. Aus diesem Grund ist es am besten, ein eng gekoppeltes Projekt nicht in mehrere Module aufzuteilen.

Wenn Sie mehrere Module zusammen entwickeln möchten, verwenden Sie die Anweisung „replace“, um eine lokale Kopie des Moduls zu verwenden, anstatt auf die Version im Repository zu verweisen. 🎜

Das obige ist der detaillierte Inhalt vonGolang, Problem beim Wechsel vom lokalen Importpfad zum Remote-Importpfad. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!