ホームページ  >  記事  >  バックエンド開発  >  golang: 無効なメモリアドレスまたは nil ポインタ逆参照

golang: 無効なメモリアドレスまたは nil ポインタ逆参照

WBOY
WBOY転載
2024-02-08 21:12:10805ブラウズ

golang: 無効なメモリアドレスまたは nil ポインタ逆参照

php エディタ Xiaoxin では、「golang: 無効なメモリ アドレスまたはゼロ ポインタの逆参照」という一般的なエラー メッセージが表示されます。 Golang プログラミング言語を使用してアプリケーションを開発しているときに、このエラーが発生することがあります。これは通常、コード内で無効なメモリ アドレスまたはゼロ ポインタが逆参照されていることを示します。このエラーにより、プログラムがクラッシュしたり、予期しない動作が発生したりする可能性があります。次に、開発者がこの問題をよりよく理解して解決できるように、このエラーを引き起こす可能性のあるいくつかの一般的な原因と解決策を検討します。

質問内容

処刑してください これで、HelloWorld という名前のプログラムができました。プロジェクト構造は次のとおりです。

aaa.go

リーリー

bbb.go

リーリー

ccc.go

リーリー

main.go

リーリー

ここでプログラムを実行すると、パニックが発生します: ランタイム エラー: 無効なメモリ アドレスまたは nil ポインター逆参照

しかし、

main.go を変更すると リーリー

正しい値を出力できる

10 bbb.govar aa = bbb.Bb の定義がなぜ間違っているのかわかりません

なぜ null ポインターなのかわかりません

解決策

上の図を見ると、インポートと変数の初期化のフローが示されています。さて、最初のケースは

aaa.world です。 world 関数の変数 nilnil に設定されます。これは、メインの init 関数が実行される前であっても、init が実行されると、bb は有効なメモリを指すためですが、事前つまり、パッケージ bbb 内の bb は初期化されていませんでした。 2 番目のケースを考えてみましょう。ここでは、init 関数も bb に有効なメモリを与えますが、ここでの問題は、aa # の割り当て後に、aa が有効なメモリを指す bb に再割り当てされることです。 ##もこんな感じです。

以上がgolang: 無効なメモリアドレスまたは nil ポインタ逆参照の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。