Go コードを整理する場合、内部パッケージはプロジェクト内のモジュール性とカプセル化を維持する方法を提供します。指定されたコード構造では、「内部」パッケージが「プロジェクト」ディレクトリ内に作成されます。
ただし、前述したように、親ディレクトリの外にある内部パッケージからインポートすることはできません。これは、内部パッケージはエクスポートされず、プロジェクトのソース ツリー内からのみアクセスできるためです。プロジェクト ディレクトリの外部からの外部インポートは、$GOPATH/src ツリーにあるパッケージに対してのみ機能します。
インポートの問題を解決するには、プロジェクト ディレクトリは $GOPATH/src の下に配置できます。これにより、内部パッケージが「project/main.go」にあるメイン パッケージに確実にアクセスできるようになります。
あるいは、Go v1.11 以降のモジュールの導入により、go.mod ファイルを作成してプロジェクトのモジュールを定義できます。このファイルは、プロジェクト内の各モジュールの場所を指定します。セットアップ方法の例を次に示します。
project/ go.mod main.go internal/ bar/ bar.go go.mod foo/ foo.go go.mod
go.mod for project/internal/bar:
module bar go 1.14
bar。 go:
package bar import "fmt" // Bar prints "Hello from Bar" func Bar() { fmt.Println("Hello from Bar") }
go.mod 用project/internal/foo:
module foo go 1.14
foo.go:
package foo import "fmt" // Foo prints "Hello from Foo" func Foo() { fmt.Println("Hello from Foo") }
main.go:
package main import ( "project/internal/bar" "project/internal/foo" ) func main() { bar.Bar() foo.Foo() }
このセットアップでは、go.mod ファイルがモジュールのパスと依存関係を定義します。各内部パッケージの情報。 replace ステートメントにより、内部パッケージが標準の $GOPATH/src ツリーの外側にある場合でも、Go は内部パッケージの場所を確実に認識できます。
このアプローチにより、内部パッケージを使用してコードを簡単に編成し、それらにシームレスにアクセスできます。メイン パッケージから取得し、プロジェクト内でモジュール性とアクセシビリティの両方を提供します。
以上がGo で内部パッケージを適切に使用およびインポートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。