Heim >Backend-Entwicklung >Golang >Problem beim Importieren benutzerdefinierter GoLang-Pakete

Problem beim Importieren benutzerdefinierter GoLang-Pakete

王林
王林nach vorne
2024-02-12 21:54:08939Durchsuche

Problem beim Importieren benutzerdefinierter GoLang-Pakete

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.

Frageninhalt

Ich lerne Golang und bin auf ein Problem gestoßen.

Ich habe die Mod-Datei mit go mod init main

erstellt

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"syntaxFehler

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.

Lösung

  1. Ändern Sie den Modulpfad durch Bearbeiten von go.mod:
- module main
+ module example.com/hello
  1. Ändern Sie den Importpfad:
import (
-     "main/controllers"
+     "example.com/hello/controllers"

      "github.com/gin-gonic/gin"
  )
  1. controller.go(删除尾随的 ;):
- package controllers;
+ package controllers
  1. Ändern Sie das Inhaltsverzeichnis contollers 重命名为 controllers 以匹配包名(缺少 r).

  2. Ordner vendor löschen.

Anleitung:

  1. mainhat 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.

  1. Importpfade ohne Punkte sind für die Standardbibliothek und die Go-Toolchain reserviert. Weitere Informationen finden Sie in der Dokumentation zu cmd/go: Modulnamen ohne Punkte beibehalten .

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen