質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.53%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Q&A

解決済

1回答

11444閲覧

【Go】package goland/lib is not in GOROOT と出て実行も出来ず, パッケージが上手く読み込めない

nyako

総合スコア45

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

0グッド

0クリップ

投稿2021/12/23 02:53

編集2021/12/23 06:36

Go

1 $GOPATH=/Users/me/coding/go

Go

1 go - 2 | - bin 3 | - src 4 | 5 - goland 6 | 7 - lib 8 | - math.go 9 - main.go 10 | - pkg

上記のように$GOPATHを設定し, 上記のような構成になっています。

Go

1// main.go 2 3package main 4 5import ( 6 "fmt" 7 "goland/lib" 8) 9 10func main() { 11 s := []int{1, 2, 3, 4, 5} 12 fmt.Println(lib.Average(s)) 13 14 person := lib.Person{Name: "taro", Age: 20} 15 fmt.Println(person) 16} 17

Go

1// math.go 2 3package lib 4 5type Person struct { 6 Name string 7 Age int 8} 9 10func Average(s []int) int { 11 total := 0 12 for _, i:= range s { 13 total += i 14 } 15 return int(total/len(s)) 16}

こちらで実行しても,

main.go:9:2: package goland/lib is not in GOROOT (/opt/homebrew/Cellar/go/1.17.3/libexec/src/goland/lib)

と表示されてしまいます。

何が原因なのか色々調べてみましたが、解決出来ないので質問させて頂きました。

宜しくお願い致します。


追記

  • (失敗する)実行時の手順またはコマンドライン -> golandディレクトリにて, go run main.go の実行
  • その時のカレントフォルダ -> ~/coding/go/src/goland
  • go version出力 -> go version go1.17.3 darwin/arm64
  • 意図的に変更している環境変数などあれば -> **printenv, .zshrcファイルも確認しても, goに関する直接変更している部分は$GOPATHのみだと思います。

PATH, zshを変えていますが、昨日までは実行はできていたので関係ないかもしれません。**

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2021/12/23 02:57

念の為に確認させていただきたいのですけれども、ディレクトリ構成図では goland/mylib となっています。これは goland/lib の間違いでしょうか?
nyako

2021/12/23 04:16 編集

早速のお返事ありがとうございます。 goland/lib が正しいです。間違えてました。 ただコードは正しく同様のエラーのままです。
nobonobo

2021/12/23 06:20 編集

- (失敗する)実行時の手順またはコマンドライン - その時のカレントフォルダ - go version出力 - 意図的に変更している環境変数などあれば 以上4点を追記してください。
nyako

2021/12/23 06:35

nobonobo様 ありがとうございます。 追記をさせて頂きました。
guest

回答1

0

ベストアンサー

Goモジュールがデフォルト有効になったことで以下のどちらかの操作が必要になります。

解決案1

Goモジュールを無効化する

GO111MODULE=off go run main.go

解決案2

Goモジュールを初期化する(go.modの作成)

go mod init goland go run .

投稿2021/12/23 07:23

編集2021/12/27 13:59
nobonobo

総合スコア3365

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nobonobo

2021/12/23 07:24

おすすめは後者で、プロジェクトは任意のフォルダに置けるようになります(GOPATH配下である必要がなくなる)。
nyako

2021/12/23 13:14

> Goモジュールがデフォルト有効になったことで以下のどちらかの操作が必要になります。 GOPATHの設定のみでOKだと思っていました。。。ということはこれからGoで環境構築してプロジェクトを始めるとみんなこの問題に直面しますね。 Goモジュールについてもう少し調べてみます。本当にありがとうございます! ちなみにもう1つお聞きしたいのですが, go envとやって環境変数がたくさん出てきますが これはどこに記載してあるのでしょうか? (GOPATHは.zshrcに、export GOPATH=$HOME/coding/go と書くと、printenvで出てくるように)
nobonobo

2021/12/23 13:25

go envにリストアップされるものはデフォルト値を持っていて、環境変数設定で上書きができるというものです。なのでGOPATHも環境変数設定しなくてもデフォルト値で開発できます。
nyako

2021/12/23 13:57

なるほど! スッキリしました。あくまで.zshrcで上書きをしているって意味だったんですね。 助かりました。 また宜しくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.53%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問