php-Editor Xinyi ist hier, um Ihnen ein häufiges Problem in GoLang vorzustellen: das Problem beim Import benutzerdefinierter Pakete. Bei der Go-Sprachentwicklung müssen wir häufig benutzerdefinierte Pakete verwenden, um bestimmte Funktionen zu implementieren. Beim Importieren benutzerdefinierter Pakete treten jedoch manchmal Probleme auf, z. B. das Paket kann nicht gefunden werden, es gibt Konflikte mit dem Paketnamen usw. In diesem Artikel werden diese Fragen ausführlich beantwortet und Lösungen bereitgestellt, die Entwicklern helfen, Probleme beim Import benutzerdefinierter Pakete besser zu bewältigen und die Entwicklungseffizienz zu verbessern.
Ich lerne Golang und bin auf ein Problem gestoßen.
Ich habe die Mod-Datei mit go mod init main
Als nächstes habe ich die Controller- und Routing-Ordner wie unten gezeigt erstellt:
├── contollers │ └── users.controller.go ├── routes │ ├── index.go │ └── users.routes.go ├── vendor │ └── modules.txt ├── go.mod ├── go.sum └── main.go
In der Mod-Datei sieht das Modul so aus
模块main
Wenn ich jetzt versuche, den Controller in den Router zu importieren, erhalte ich einen Importfehler.
Ich habe Folgendes getan. Versuchen Sie es - 1
import ( "$gopath/controllers" "github.com/gin-gonic/gin" )
Es gibt einen invalid import path: "$gopath/controllers"syntax
Fehler
Versuchen Sie es - 2
import ( "$gopath/main/controllers" "github.com/gin-gonic/gin" )
Gleicher Fehler
Versuchen Sie es - 3
import ( "main/controllers" "github.com/gin-gonic/gin" )
controller.go
package controllers; import ( "fmt" "github.com/gin-gonic/gin" ) func healthcheck() gin.handlerfunc { return func (c *gin.context) { fmt.println("reached controller") } }
router.go
package routes import ( "bootcamp.com/server/controllers" "github.com/gin-gonic/gin" ) func UserRouters(inComingRoutes *gin.Engine) { inComingRoutes.GET("/api/health", controllers.HealthCheck()); }
Wirft einen Fehler wie diesen aus, 无法导入main/controllers(没有必需的模块提供包“main/controllers”)
Ich stecke seit 3-4 Stunden mit diesem Problem fest. Kann mir bitte jemand vorschlagen, wie ich diesen Controller in meine Routen importieren kann?
Vielen Dank im Voraus.
go.mod
: - module main + module example.com/hello
import ( - "main/controllers" + "example.com/hello/controllers" "github.com/gin-gonic/gin" )
controller.go
(删除尾随的 ;
):- package controllers; + package controllers
Ändern Sie das Inhaltsverzeichnis contollers
重命名为 controllers
以匹配包名(缺少 r
).
Ordner vendor
löschen.
Anleitung:
main
hat in go eine besondere Bedeutung. Zitiert aus der golang-Spezifikation: Ein vollständiges Programm wird erstellt, indem ein einzelnes nicht importiertes Paket namens Hauptpaket transitiv mit allen importierten Paketen verknüpft wird. Das Hauptpaket muss den Paketnamen main haben und eine Funktion main deklarieren, die keine Parameter akzeptiert und keinen Wert zurückgibt.
Das obige ist der detaillierte Inhalt vonProblem beim Importieren benutzerdefinierter GoLang-Pakete. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!