ホームページ >バックエンド開発 >Golang >サブフォルダーからファイルをインポートすると Go で「未定義」エラーが発生するのはなぜですか?また、モジュール型プロジェクト構造を維持しながら Go モジュールを使用してエラーを解決するにはどうすればよいですか?

サブフォルダーからファイルをインポートすると Go で「未定義」エラーが発生するのはなぜですか?また、モジュール型プロジェクト構造を維持しながら Go モジュールを使用してエラーを解決するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-15 11:56:02359ブラウズ

Why does importing a file from a subfolder result in an

Go モジュールを使用してサブフォルダーを含むプロジェクトを構造化する

ナビゲーション
次の構造でプロジェクトを設計したいと思います:

このレイアウトでは、main.go は user.go ファイルをインポートします。ユーザータイプを定義します。ただし、コンパイラは、User がメイン パッケージで定義されていないことを警告します。

質問
このエラーはなぜ発生しますか?また、モジュール型プロジェクト構造を維持しながら解決するにはどうすればよいですか?

回答
この問題は、プロジェクトにモジュール定義が存在しないことが原因で発生します。 Go 1.11.1 より前の Go は $GOPATH 環境変数に依存していたため、プロジェクトの依存関係の管理が複雑になりました。

Go モジュールは Go 1.11.1 で導入され、Go 1.11.3 ではデフォルトで有効になりました。この問題。 (GO111MODULE=on 環境変数を介して) モジュールを有効にすることで、バージョン管理された依存関係と階層構造を備えたモジュラー プロジェクトを作成できます。

ソリューション
Go モジュールを活用するには、次の手順に従います。

  1. を作成するgo.mod ファイル:

    • モジュール を追加します。モジュール名を定義します。この場合は main です。
  2. 次のようにプロジェクトを構造化します。
  1. ユーザーをインポートします。 main.go:

    • main.go で、import "main/src/models/user" を使用して user.go ファイルをインポートします。
  2. サンプルmain.go:

  3. サンプル user.go:

この構造これにより、models/user.go ファイルから main.go ファイルにユーザー タイプをインポートできるようになります。 go.mod ファイルはモジュール名を定義し、プロジェクトのルートとして機能します。

以上がサブフォルダーからファイルをインポートすると Go で「未定義」エラーが発生するのはなぜですか?また、モジュール型プロジェクト構造を維持しながら Go モジュールを使用してエラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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