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

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

Susan Sarandon
Susan Sarandonオリジナル
2024-12-25 14:12:24954ブラウズ

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。