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
Libérer: 2024-12-17 09:47:25
original
530 Les gens l'ont consulté

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
}
Copier après la connexion

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

}
Copier après la connexion

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)
}
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal