ナビゲーション
次の構造でプロジェクトを設計したいと思います:
このレイアウトでは、main.go は user.go ファイルをインポートします。ユーザータイプを定義します。ただし、コンパイラは、User がメイン パッケージで定義されていないことを警告します。
質問
このエラーはなぜ発生しますか?また、モジュール型プロジェクト構造を維持しながら解決するにはどうすればよいですか?
回答
この問題は、プロジェクトにモジュール定義が存在しないことが原因で発生します。 Go 1.11.1 より前の Go は $GOPATH 環境変数に依存していたため、プロジェクトの依存関係の管理が複雑になりました。
Go モジュールは Go 1.11.1 で導入され、Go 1.11.3 ではデフォルトで有効になりました。この問題。 (GO111MODULE=on 環境変数を介して) モジュールを有効にすることで、バージョン管理された依存関係と階層構造を備えたモジュラー プロジェクトを作成できます。
ソリューション
Go モジュールを活用するには、次の手順に従います。
を作成するgo.mod ファイル:
ユーザーをインポートします。 main.go:
サンプルmain.go:
サンプル user.go:
この構造これにより、models/user.go ファイルから main.go ファイルにユーザー タイプをインポートできるようになります。 go.mod ファイルはモジュール名を定義し、プロジェクトのルートとして機能します。
以上がサブフォルダーからファイルをインポートすると Go で「未定義」エラーが発生するのはなぜですか?また、モジュール型プロジェクト構造を維持しながら Go モジュールを使用してエラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。