このコマンド「go mod init database」を使用して、「database」フォルダーの「GOPATH」の外部で個人用モジュールとしてライブラリーを作成しましたが、わかりません。
OS:Windows 7、Go:v1.11
最も簡単ですぐに使えるソリューションは、database
パッケージ/モジュールをVCS(たとえばgithub.com)に配置することです。これにより、他のパッケージ(他のモジュール内)がインポートすることで簡単に参照できますそれが好きです:
import "github.com/someone/database"
そうすれば、go.mod
ファイルを手動で操作する必要さえありません。すべてがgoツールで処理されます。この依存関係を自動的に認識して解決し、必要なパッケージをダウンロードしてインストールします。また、go.mod
も自動的に更新されます。
VCSを使用したくない場合(たとえば、単に実験をしている場合や、まだ何を使用するか決めていない場合)、それでも実行できます。 howの詳細は、公式の Go Wiki:ローカルファイルシステムでVCSの完全に外部で作業できますか?
したがって、database
の外部にGOPATH
フォルダーを作成し、その中にモジュールを作成しました。そして、別のモジュールを作成し、main
と呼び、このdatabase
パッケージを使用したいとします。
あなたがしなければならないことは:
main
モジュールのgo.mod
は、database
パッケージを「要件」としてリストする必要があります。 database
パッケージに一時的なVCS名を付けます:
require (
example.com/me/database v0.0.0
)
使用した完全なパッケージ名は単なる一時的な/空想上の名前であるため、このパッケージの場所をgoツールに伝える必要があります。 replace
ディレクティブを使用して、このdatabase
パッケージがローカルディスク上のフォルダーを指すようにします。絶対パスと相対パスを使用できます:
replace example.com/me/database => ../database
そして、それだけです。
実際の例を見てみましょう。 pretty
モジュールを作成しましょう。 2つのファイルを含むpretty
フォルダーを作成します。
pretty.go:
package pretty
import "fmt"
func Pretty(v ...interface{}) {
fmt.Println(v...)
}
go.mod(go mod init pretty
を実行することで作成できます):
module pretty
次に、別のメインモジュールを作成しましょう。 osinf
フォルダーの隣にフォルダーpretty
(何でも構いません)を作成しましょう。その中の2つのファイル:
osinf.go(pretty
パッケージ/モジュールを使用することに注意してください。"example.com/me/pretty"
でインポートします):
package main
import "example.com/me/pretty"
func main() {
pretty.Pretty("hi")
pretty.Pretty([]int{1, 3, 5})
}
go.mod:
module main
require example.com/me/pretty v0.0.0
replace example.com/me/pretty => ../pretty
そして、それだけです。
osinf
フォルダーでgo run osinf.go
を実行すると、出力は次のようになります。
hi
[1 3 5]