Maison >développement back-end >Golang >Pourquoi est-ce que j'obtiens le message « Le package XXX n'est pas dans GOROOT » lors de la création de mon projet Go ?

Pourquoi est-ce que j'obtiens le message « Le package XXX n'est pas dans GOROOT » lors de la création de mon projet Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-17 09:47:25449parcourir

Why Do I Get

"Le package XXX n'est pas dans GOROOT" lors de la création d'un projet Go

Problème :
Lors de la tentative de création d'un projet Go, le message d'erreur "le package XXX n'est pas dans GOROOT" peut apparaissent.

Solution :

Dans les versions plus récentes de Go (post 1.13), les variables d'environnement comme GOPATH, GOBIN, etc., ne sont plus nécessaires. Au lieu de cela :

  • Assurez-vous qu'un fichier go.mod existe à la racine du projet, qui désigne le répertoire comme module Go.
  • Initialisez le module à l'aide de go mod init remote-repo.com /username/repository.
  • Spécifiez le chemin complet du package lors de l'exécution de commandes, telles que go COMMAND package_path/xxx. Cela empêche le compilateur de supposer que le package est dans GOROOT.
  • Go utilise l'espace de travail du projet ou le répertoire de travail actuel pour les packages qui ne font pas partie du SDK Go.
  • Pour installer un binaire exécutable, utilisez go install.
  • Pour compiler un exécutable dans le répertoire courant, utilisez go build.

Workflow :

  1. Initialisez le module Go à la racine du projet à l'aide de go mod init.
  2. Exécutez des tests à l'aide go test -v ./... (récursivement) ou go test -v ./xxx (pour un package).
  3. Compilez et exécutez le package en utilisant go run ./... (de manière récursive) ou go run ./xxx (pour un package spécifique).

Exemple de code pour la 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)
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn