ホームページ > バックエンド開発 > Golang > Go で内部パッケージを適切に使用およびインポートするにはどうすればよいですか?

Go で内部パッケージを適切に使用およびインポートするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-17 14:13:10
オリジナル
849 人が閲覧しました

How Can I Properly Use and Import Internal Packages in Go?

Go での内部パッケージの使用法を理解する

Go コードを整理する場合、内部パッケージはプロジェクト内のモジュール性とカプセル化を維持する方法を提供します。指定されたコード構造では、「内部」パッケージが「プロジェクト」ディレクトリ内に作成されます。

外部インポートからの内部パッケージの除外

ただし、前述したように、親ディレクトリの外にある内部パッケージからインポートすることはできません。これは、内部パッケージはエクスポートされず、プロジェクトのソース ツリー内からのみアクセスできるためです。プロジェクト ディレクトリの外部からの外部インポートは、$GOPATH/src ツリーにあるパッケージに対してのみ機能します。

gt;インポートの問題の解決

インポートの問題を解決するには、プロジェクト ディレクトリは $GOPATH/src の下に配置できます。これにより、内部パッケージが「project/main.go」にあるメイン パッケージに確実にアクセスできるようになります。

Go v1.11 以降のモジュール サポート

あるいは、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート