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
Mary-Kate OlsenOriginal
2024-12-17 09:47:25461Durchsuche

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
}

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

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!

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