Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Masalah import pakej tersuai GoLang

Masalah import pakej tersuai GoLang

王林
王林ke hadapan
2024-02-12 21:54:08916semak imbas

Masalah import pakej tersuai GoLang

editor php Xinyi di sini untuk memperkenalkan kepada anda masalah biasa dalam GoLang: masalah import pakej tersuai. Dalam pembangunan bahasa Go, kita selalunya perlu menggunakan pakej tersuai untuk melaksanakan beberapa fungsi tertentu. Walau bagaimanapun, apabila mengimport pakej tersuai, beberapa masalah kadangkala berlaku, seperti pakej tidak ditemui, konflik nama pakej, dsb. Artikel ini akan menjawab soalan ini secara terperinci dan menyediakan penyelesaian untuk membantu pembangun menangani masalah import pakej tersuai dengan lebih baik dan meningkatkan kecekapan pembangunan.

Isi soalan

Saya sedang belajar golang dan menghadapi masalah.

Saya mencipta fail mod menggunakan go mod init main

Seterusnya saya mencipta folder pengawal dan penghalaan seperti yang ditunjukkan di bawah:

├── contollers
│   └── users.controller.go
├── routes
│   ├── index.go
│   └── users.routes.go
├── vendor
│   └── modules.txt
├── go.mod
├── go.sum
└── main.go

Dalam fail mod, modul kelihatan seperti ini 模块main

Sekarang apabila saya cuba mengimport pengawal ke dalam penghala ia memberi saya ralat import.

Saya telah melakukan perkara berikut. Cuba - 1

import (
    "$gopath/controllers"

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

Ia memberikan invalid import path: "$gopath/controllers"syntax ralat

Cuba - 2

import (
    "$gopath/main/controllers"

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

Ralat yang sama

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

melontar ralat seperti ini, 无法导入main/controllers(没有必需的模块提供包“main/controllers”)

Saya telah terperangkap dengan isu ini selama 3-4 jam, bolehkah seseorang mencadangkan saya cara mengimport pengawal ini ke laluan saya.

Terima kasih terlebih dahulu.

Penyelesaian

  1. Ubah suai laluan modul dengan mengedit go.mod:
- module main
+ module example.com/hello
  1. Ubah suai laluan import:
import (
-     "main/controllers"
+     "example.com/hello/controllers"

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

  2. Padam vendor folder.

Arahan:

  1. mainmempunyai makna istimewa dalam perjalanan. Dipetik daripada spesifikasi golang:

Satu program lengkap dicipta dengan memautkan secara transitif satu pakej yang tidak diimport yang dipanggil pakej utama dengan semua pakej yang diimportnya. Pakej utama mesti mempunyai nama pakej utama dan mengisytiharkan fungsi utama yang tidak mengambil parameter dan tidak mengembalikan nilai.

  1. Laluan import tanpa titik dikhaskan untuk perpustakaan standard dan rantai alat. Lihat dokumentasi untuk cmd/go: Memelihara nama modul tanpa titik .

Atas ialah kandungan terperinci Masalah import pakej tersuai GoLang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam