1. ホーム
  2. go

[解決済み] GolangパッケージがGOROOTにない(/usr/local/go/src/packageName) [閉じた]。

2022-02-18 18:03:52

質問

こんにちは、誰か私のmain.goを実行するのを手伝ってくれませんか? go run main.go ?

2つのフォルダが隣り合っています。

proj1 フォルダには main.go と go.mod があります。

package1 フォルダには package1.go, go.mod, utility.go があります。

main.goの内側です。

package main

import (
    "package1"
    "fmt"
)

func main() {
    y := package1.Struct1{
        v: "1",
    }
    z := package1.isTrue()
    fmt.Println(z)
}

私のパッケージフォルダ内: package1.go

package package1

type Package1 struct {}

func (a *Package1) IsTrue() bool {
    return true
}

私のGoバージョン:go1.15.2 linux/amd64

私のGoの環境設定です。

GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/user1/.cache/go-build"
GOENV="/home/user1/.config/go/env"
GOMODCACHE="/mnt/sda5/gopath/pkg/mod"
GOOS="linux"
GOPATH="/mnt/sda5/gopath"
GOROOT="/usr/local/go"
...

試してみました。 go install, go build ...結果、パッケージフォルダ内でエラーは発生しませんでした。

go mod vendor, go run main.go, go get -u package1 ... proj1フォルダ内で実行すると、同じメッセージが表示されます。

パッケージ package1 が GOROOT にない (/usr/local/go/src/package1)

VS Code Go Plugin Linterでは問題なしと表示されます。 よろしくお願いします。ありがとうございます。

解決方法は?

私が直面していたエラーを解決するには package package1 is not in GOROOT (/usr/local/go/src/package1)

環境変数が正しく設定されていることを確認する必要がありました。

私は、これらの行を bashrc ファイルを作成します。

export GO111MODULE=on
#GOPATH MUST BE OUTSIDE OF GOROOT directory!!!
export GOPATH=/mnt/sda1/programming/gopath
export PATH=$PATH:$GOPATH/bin

export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin

を読み込んだ。 bashrc ファイルをターミナルで表示します。

source ~/.bashrc

これで、以下の手順を実行すれば、Go言語でプログラミングができるようになりました。

新しい main フォルダーを作成します。 この中に main フォルダーに格納されます。 作る main.go で始まるファイル package main

以下のコマンドを実行してください。

go mod init main

新しいパッケージ名で別のフォルダを作成します: 例. package1

の中に package1 フォルダーに格納します。 を含むすべてのファイルを package package1 ただし、このパッケージフォルダ内ではMODファイルを作成しないでください。

の中に main.go そのパッケージをインポートして使用することができます。

import "main/package1"
y := package1.Struct1{a: 1, b: 2,...}
z := y.func1()