質問: githubなどのnon-standard packageをインポートするときに問題が発生しており、 皆さまのお知恵を拝借したく、ここで質問させていただいています。 少し背景から説明させていただきます。 現状では、go言語(version 1.6.2)を使って、mainコードを書いています。 ここでは、このmain fileをmain.goとします。 しかし、多数のfunctionを作成しましたので、このmain.goの行数が多くなり、compile時間の長さが気になってきました。スパゲッティ・コードの整理を兼ねて、このmain.goからfunctionの部分を移動させて、別packageにしています。ここでは、このpackageを、package.goとします。 以前に、packageを作成した経験がありますので、作成+動作確認は問題ありません。 しかし、以前とは違って、 githubなどのnon-standard packageを、このpackage.goに移植したことがありませんでした。 今回このpackage.goのimport部分に、main.goで使用していたmatrix packageを以下のように書きました。 import "github.com/skelterjohn/go.matrix" しかし、main.goで動いていたmatrix packageが使えなくなりました。 エラーメッセージは以下の通りです non-standard import "github.com/skelterjohn/go.matrix" in standard package "package.go" $GOPATHを調べてみましたが、 .gvm/pkgsets/go1.6.2/global このglobal directoryの下にgithub.com dirが存在しています。 まさかと思いましたが、念の為package.goの中にも同じmatrix packageを作成しましたが、同じエラーメッセージが出ています。 このような場合、どのように問題を解決することができたのかを、ご教授していただけると大変助かります。
回答: mjy様が提案していただいた、ファイルの配置を検討したところ、問題が解決しました。 ここに記録用に解決方法を記しておきます。 まず、問題が発生していたときのファイルの配置方法は以下の通りでした。 ``` (修正前) main.go -> /home/hoge/programs/go package.go -> /home/hoge/.gvm/gos/go1.6.2/src/package ``` このファイルの配置方法は、goを書き始めたときに学びました。 しかし、この方法ですと、goのversionを変えるとイチイチpackage/package.goのファイルの配置を変える必要がありました。面倒だと思ってはいましたが、変更方法がわかりませんでしたので、そのままになっていました。 今回は2点の変更点で、この問題を解決できました。 No.1.package.goを含むdirectoryの配置を変えた。具体的には、mian.goが入っているdirectoryの中にpackage directoryを移動させました。 ``` (修正後) package.go -> /home/hoge/programs/go/package ``` これに加えて、 No. 2. main.goの中にあるimportの記述を変更した。具体的には、"./"を加えました。 ``` 修正前: import "package" 修正後: import "./package" ``` この2点で問題を解決できました。 正しいファイルの設置方法に関して不勉強でした。 ありがとうございました。