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

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

王林
王林avant
2024-02-12 21:54:08828parcourir

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

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

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

Essayez - 2

import (
    "$gopath/main/controllers"

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

Même erreur

Essayez - 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")
    }
}

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());
}

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
  1. Modifier le chemin d'importation :
import (
-     "main/controllers"
+     "example.com/hello/controllers"

      "github.com/gin-gonic/gin"
  )
  1. controller.go(删除尾随的 ;):
- package controllers;
+ package controllers
  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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer