Heim > Backend-Entwicklung > Golang > Warum erhalte ich beim Erstellen meines Go-Projekts die Meldung „Paket XXX ist nicht in GOROOT'?

Warum erhalte ich beim Erstellen meines Go-Projekts die Meldung „Paket XXX ist nicht in GOROOT'?

Mary-Kate Olsen
Freigeben: 2024-12-17 09:47:25
Original
459 Leute haben es durchsucht

Why Do I Get

„Paket XXX ist nicht in GOROOT“ beim Erstellen eines Go-Projekts

Problem:
Beim Versuch, ein Go-Projekt zu erstellen, Möglicherweise kommt die Fehlermeldung „Paket XXX ist nicht in GOROOT“. erscheinen.

Lösung:

In neueren Versionen von Go (Post 1.13) sind Umgebungsvariablen wie GOPATH, GOBIN usw. nicht mehr notwendig. Stattdessen:

  • Stellen Sie sicher, dass eine go.mod-Datei im Projektstamm vorhanden ist, die das Verzeichnis als Go-Modul kennzeichnet.
  • Initialisieren Sie das Modul mit go mod init remote-repo.com /username/repository.
  • Geben Sie den vollständigen Paketpfad an, wenn Sie Befehle ausführen, z. B. go COMMAND package_path/xxx. Dadurch wird verhindert, dass der Compiler davon ausgeht, dass sich das Paket in GOROOT befindet.
  • Go verwendet den Projektarbeitsbereich oder das aktuelle Arbeitsverzeichnis für Pakete, die nicht Teil des Go SDK sind.
  • Um eine ausführbare Binärdatei zu installieren, Verwenden Sie go install.
  • Um eine ausführbare Datei im aktuellen Verzeichnis zu kompilieren, verwenden Sie go build.

Workflow:

  1. Initialisieren Sie das Go-Modul im Projektstammverzeichnis mit go mod init.
  2. Führen Sie Tests mit aus go test -v ./... (rekursiv) oder go test -v ./xxx (für eine bestimmte Paket).
  3. Kompilieren und führen Sie das Paket mit go run ./... (rekursiv) oder go run ./xxx (für ein bestimmtes Paket) aus.

Codebeispiel für Version 1:

add.go:

package main

func addition(x int, y int) int {
    return x + y
}
Nach dem Login kopieren

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

}
Nach dem Login kopieren

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)
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum erhalte ich beim Erstellen meines Go-Projekts die Meldung „Paket XXX ist nicht in GOROOT'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage