Masalah import pakej tersuai GoLang

王林
Lepaskan: 2024-02-12 21:54:08
ke hadapan
915 orang telah melayarinya

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
Salin selepas log masuk

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"
)
Salin selepas log masuk

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

Cuba - 2

import (
    "$gopath/main/controllers"

    "github.com/gin-gonic/gin"
)
Salin selepas log masuk

Ralat yang sama

Cuba - 3

import (
    "main/controllers"

    "github.com/gin-gonic/gin"
)
Salin selepas log masuk

controller.go

package controllers;

import (
    "fmt"

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

func healthcheck() gin.handlerfunc {
    return func (c *gin.context)  {
        fmt.println("reached controller")
    }
}
Salin selepas log masuk

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());
}
Salin selepas log masuk

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
Salin selepas log masuk
  • Ubah suai laluan import:
  • import (
    -     "main/controllers"
    +     "example.com/hello/controllers"
    
          "github.com/gin-gonic/gin"
      )
    Salin selepas log masuk
  • controller.go(删除尾随的 ;):
  • - package controllers;
    + package controllers
    Salin selepas log masuk
    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!

    Label berkaitan:
    sumber:stackoverflow.com
    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan