Rumah >pembangunan bahagian belakang >Golang >Mengapa Saya Mendapat 'pakej XXX tiada dalam GOROOT' Semasa Membina Projek My Go?

Mengapa Saya Mendapat 'pakej XXX tiada dalam GOROOT' Semasa Membina Projek My Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-17 09:47:25456semak imbas

Why Do I Get

"Pakej XXX tiada dalam GOROOT" Semasa Membina Projek Go

Isu:
Apabila cuba membina projek Go, mesej ralat "pakej XXX tiada dalam GOROOT" boleh muncul.

Penyelesaian:

Dalam versi baharu Go (siaran 1.13), pembolehubah persekitaran seperti GOPATH, GOBIN, dll., tidak lagi diperlukan. Sebaliknya:

  • Pastikan fail go.mod wujud pada akar projek, yang menetapkan direktori sebagai modul Go.
  • Mulakan modul menggunakan go mod init remote-repo.com /nama pengguna/repositori.
  • Nyatakan laluan pakej penuh semasa menjalankan arahan, seperti pergi COMMAND package_path/xxx. Ini menghalang pengkompil daripada menganggap pakej berada dalam GOROOT.
  • Go menggunakan ruang kerja projek atau direktori kerja semasa untuk pakej yang bukan sebahagian daripada Go SDK.
  • Untuk memasang binari boleh laku, gunakan go install.
  • Untuk menyusun boleh laku dalam direktori semasa, gunakan go bina.

Aliran Kerja:

  1. Mulakan modul Go pada akar projek menggunakan go mod init.
  2. Jalankan ujian menggunakan pergi ujian -v ./... (secara rekursif) atau pergi ujian -v ./xxx (untuk tertentu pakej).
  3. Kompilasi dan laksanakan pakej menggunakan go run ./... (secara rekursif) atau go run ./xxx (untuk pakej tertentu).

Contoh Kod untuk Versi 1:

add.go:

package main

func addition(x int, y int) int {
    return x + y
}

add_test.go:

package main

import "testing"

func TestAdd(t *testing.T) {

    t.Run("adding two positive numbers", func(t *testing.T) {
        sum := addition(2, 2)
        expected := 4

        if sum != expected {
            t.Errorf("Expected %d; but got %d", expected, sum)
        }
    })

    t.Run("adding two negative numbers", func(t *testing.T) {
        sum := addition(-3, -4)
        expected := -7

        if sum != expected {
            t.Errorf("Expected %d; but got %d", expected, sum)
        }
    })

    t.Run("adding one positive and one negative integer", func(t *testing.T) {
        sum := addition(1, -3)
        expected := -2

        if sum != expected {
            t.Errorf("Expected %d; but got %d", expected, sum)
        }
    })

}

main.go:

package main

import "fmt"

func main() {
    var num1 int = 1
    var num2 int = 2

    sum := addition(num1, num2)
    product := multiplication(num1, num2)

    fmt.Printf("The sum of %d and %d is %d\n", num1, num2, sum)
    fmt.Printf("The multiplication of %d and %d is %d\n", num1, num2, product)
}

Atas ialah kandungan terperinci Mengapa Saya Mendapat 'pakej XXX tiada dalam GOROOT' Semasa Membina Projek My Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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