Maison > développement back-end > Golang > Problème d'importation de packages personnalisés GoLang

Problème d'importation de packages personnalisés GoLang

王林
Libérer: 2024-02-12 21:54:08
avant
918 Les gens l'ont consulté

Problème dimportation de packages personnalisés GoLang

L'éditeur php Xinyi est là pour vous présenter un problème courant dans GoLang : le problème d'importation de packages personnalisés. Dans le développement du langage Go, nous devons souvent utiliser des packages personnalisés pour implémenter certaines fonctions spécifiques. Cependant, lors de l'importation de packages personnalisés, certains problèmes surviennent parfois, tels qu'un package introuvable, des conflits de noms de package, etc. Cet article répondra à ces questions en détail et fournira des solutions pour aider les développeurs à mieux gérer les problèmes d'importation de packages personnalisés et à améliorer l'efficacité du développement.

Contenu de la question

J'apprends le golang et j'ai rencontré un problème.

J'ai créé le fichier mod en utilisant go mod init main

Ensuite, j'ai créé les dossiers de contrôleur et de routage comme indiqué ci-dessous :

├── contollers
│   └── users.controller.go
├── routes
│   ├── index.go
│   └── users.routes.go
├── vendor
│   └── modules.txt
├── go.mod
├── go.sum
└── main.go
Copier après la connexion

Dans le fichier mod, le module ressemble à ceci 模块main

Maintenant, lorsque j'essaie d'importer le contrôleur dans le routeur, cela me donne une erreur d'importation.

J'ai fait ce qui suit. Essayez - 1

import (
    "$gopath/controllers"

    "github.com/gin-gonic/gin"
)
Copier après la connexion

Cela donne invalid import path: "$gopath/controllers"syntaxerreur

Essayez - 2

import (
    "$gopath/main/controllers"

    "github.com/gin-gonic/gin"
)
Copier après la connexion

Même erreur

Essayez - 3

import (
    "main/controllers"

    "github.com/gin-gonic/gin"
)
Copier après la connexion

controller.go

package controllers;

import (
    "fmt"

    "github.com/gin-gonic/gin"
)

func healthcheck() gin.handlerfunc {
    return func (c *gin.context)  {
        fmt.println("reached controller")
    }
}
Copier après la connexion

routeur.go

package routes

import (
    "bootcamp.com/server/controllers"

    "github.com/gin-gonic/gin"
)

func UserRouters(inComingRoutes *gin.Engine) {
    inComingRoutes.GET("/api/health", controllers.HealthCheck());
}
Copier après la connexion

Lance une erreur comme celle-ci, 无法导入main/controllers(没有必需的模块提供包“main/controllers”)

Je suis coincé avec ce problème depuis 3-4 heures, quelqu'un peut-il me suggérer comment importer ce contrôleur dans mes itinéraires.

Merci d'avance.

Solution

  1. Modifiez le chemin du module en éditant go.mod :
- module main
+ module example.com/hello
Copier après la connexion
  • Modifier le chemin d'importation :
  • import (
    -     "main/controllers"
    +     "example.com/hello/controllers"
    
          "github.com/gin-gonic/gin"
      )
    Copier après la connexion
  • controller.go(删除尾随的 ;):
  • - package controllers;
    + package controllers
    Copier après la connexion
    1. Changer la table des matières contollers 重命名为 controllers 以匹配包名(缺少 r).

    2. Supprimer vendor dossier.

    Instructions :

    1. maina une signification particulière en go. Cité de spécification golang :

    Un programme complet est créé en liant transitivement un seul package non importé appelé paquet principal avec tous ses packages importés. Le package main doit avoir le nom de package main et déclarer une fonction main qui ne prend aucun paramètre et ne renvoie aucune valeur.

    1. Les chemins d'importation sans points sont réservés à la bibliothèque standard et à la chaîne d'outils go. Voir la documentation pour cmd/go : Préserver les noms de modules sans points .

    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