ホームページ > バックエンド開発 > Golang > モジュールを含む内部パッケージを使用して Go コードを効果的に編成するにはどうすればよいですか?

モジュールを含む内部パッケージを使用して Go コードを効果的に編成するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-25 14:12:24
オリジナル
892 人が閲覧しました

How to Effectively Organize Go Code Using Internal Packages with Modules?

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

質問:

「内部」パッケージを使用して 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
ログイン後にコピー

重要な注意事項:

  • require セクションの名前は Go の内部使用のためのものであり、任意。
  • require セクションのバージョン番号は、このコンテキストでは重要ではありません。
  • 置換行は、Go が内部パッケージを検索できる場所を指定します。

実行:

main.go ファイルを実行すると、 print:

Hello from Bar
Hello from Foo
ログイン後にコピー

この例では、モジュールを使用して Go プロジェクト内で内部パッケージを効果的に使用する方法を示します。

以上がモジュールを含む内部パッケージを使用して Go コードを効果的に編成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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