ホームページ > バックエンド開発 > Golang > Go プロジェクトをビルドするときに「パッケージ XXX は GOROOT にありません」というメッセージが表示されるのはなぜですか?

Go プロジェクトをビルドするときに「パッケージ XXX は GOROOT にありません」というメッセージが表示されるのはなぜですか?

Mary-Kate Olsen
リリース: 2024-12-17 09:47:25
オリジナル
448 人が閲覧しました

Why Do I Get

Go プロジェクトをビルドするときに「パッケージ XXX は GOROOT にありません」

問題:
Go プロジェクトをビルドしようとすると、 「パッケージ XXX は GOROOT にありません」というエラー メッセージが表示される場合があります。

解決策:

Go の新しいバージョン (1.13 以降) では、GOPATH、GOBIN などの環境変数は必要なくなりました。代わりに:

  • ディレクトリを Go モジュールとして指定する go.mod ファイルがプロジェクト ルートに存在することを確認します。
  • go mod init Remote-repo.com を使用してモジュールを初期化します。 /username/repository.
  • コマンドを実行するときに完全なパッケージ パスを指定します (go COMMAND package_path/xxx など)。これにより、コンパイラはパッケージが GOROOT にあると想定できなくなります。
  • Go は、Go SDK の一部ではないパッケージにプロジェクト ワークスペースまたは現在の作業ディレクトリを使用します。
  • 実行可能バイナリをインストールするには、 go install を使用してください。
  • 現在のディレクトリで実行可能ファイルをコンパイルするには、go を使用してくださいbuild.

ワークフロー:

  1. go mod init を使用してプロジェクト ルートで Go モジュールを初期化します。
  2. 次を使用してテストを実行しますgo test -v ./... (再帰的) または go test -v ./xxx (特定のpackage).
  3. go run ./... (再帰的) または go run ./xxx (特定のパッケージの場合) を使用してパッケージをコンパイルし、実行します。

バージョンのコード例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)
}
ログイン後にコピー

以上がGo プロジェクトをビルドするときに「パッケージ XXX は GOROOT にありません」というメッセージが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート