質問:
「内部」パッケージを使用して Go コードを効果的に編成するにはどうすればよいですか?
イニシャル問題:
プロジェクトを GOPATH の外に配置しているにもかかわらず、相対パス (例: "./internal/foo|bar") を使用しない限り、main.go からの内部パッケージのインポートは失敗します。
モジュールの紹介:
モジュールの導入によりGo v1.11 以降では、$GOPATH/src 内にプロジェクトを配置する必要はなくなりました。代わりに、go.mod ファイルを作成して各モジュールの場所を指定する必要があります。
例:
次のプロジェクト構造を考えてみましょう:
project/ go.mod main.go internal/ bar/ bar.go go.mod foo/ foo.go go.mod
go.mod ファイル:
go.mod内部パッケージのファイルは単純です:
module bar go 1.14
module foo go 1.14
内部パッケージのコード:
// bar.go package bar import "fmt" // Bar prints "Hello from Bar" func Bar() { fmt.Println("Hello from Bar") } // foo.go package foo import "fmt" // Foo prints "Hello from Foo" func Foo() { fmt.Println("Hello from Foo") }
main.go:
// main.go package main import ( "internal/bar" "internal/foo" ) func main() { bar.Bar() foo.Foo() }
プロジェクト go.modファイル:
プロジェクト go.mod ファイルは、内部パッケージとその場所について Go に通知します:
module project go 1.14 require internal/bar v1.0.0 replace internal/bar => ./internal/bar require internal/foo v1.0.0 replace internal/foo => ./internal/foo
重要な注意事項:
実行:
main.go ファイルを実行すると、 print:
Hello from Bar Hello from Foo
この例では、モジュールを使用して Go プロジェクト内で内部パッケージを効果的に使用する方法を示します。
以上がモジュールを含む内部パッケージを使用して Go コードを効果的に編成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。