Go 言語では、null ポインター逆参照コンパイル エラーが発生する可能性はありません。これは、Go 言語が設計により null ポインターの問題を回避しているためです。変数を宣言すると、デフォルトでは NULL ポインターではなくゼロ値に初期化されます。同時に、Go 言語は、複数の戻り値を使用してエラー情報を返したり、遅延やパニック/リカバリを使用して例外を処理したりするなど、豊富なエラー処理メカニズムも提供します。これらの機能により、Go 言語はコンパイル段階で潜在的な null ポインター エラーをキャッチし、より安全で信頼性の高いプログラミング環境を提供できるようになります。したがって、Go 言語では、「null ptr 逆参照」のようなコンパイル エラーは発生しません。
同僚がgoでnull ptrを逆参照しました。
私は彼に私と同じことをするよう提案しました。他の言語で作業するとき、私は警告レベルを上げて警告をエラーに変える傾向があります。たとえば、C# の場合、これはこのコードをコンパイルできないことを意味します:
リーリー理解しているから
リーリーはっきり言って、これはかなり良いです。
しかし、彼は、Go にはそもそも 警告レベルがないと私に言いました。そして、それをグーグルで調べてみると、どうやら彼の言うことは正しかったようです。
それでは、Go でこの問題を解決するにはどうすればよいでしょうか? 「優れたプログラマはミスをしない」という古い C のアドバイスに戻るのでしょうか。完璧な人材と協力しないと、null ptr 逆参照が発生することがありますか?
これは正解です。nil
の場合を処理せずにポインターを逆参照しても、コンパイラ エラーを引き起こすことはできません。それは言語仕様がそれを許可しているためです。それについては何もできません。
どの言語でも間違ったコードを書くことができます。エラーを早期に発見したり軽減したりする方法は、ほぼすべての言語でテストを書くことです。
Go には、go
ツール自体に優れた テスト フレームワークが組み込まれています。ぜひ活用してみてください。外出先でもテストを作成できます。 Go テストは定期的に実行する必要があり、CI/CD 時およびリリース前に自動的に実行されます。ほとんどの IDE は、保存されたテストも自動的に実行します。
使用できるもう 1 つのトリック: nil
ポインターが意味をなさない場合は、非ポインター型を使用する API を作成します。もちろん、これには欠点があります (ポインターが必要な場合もあります); ポインターを使用する方が合理的である場合は、ポインターを使用しますが、nil
値をチェックして、それらを適切に処理してください (例: return error
、それが意味がある場合はパニックになります、など)。 nil
ポインター値を使用してテストするテストも作成します。
以上がGo で潜在的な null ptr 逆参照を伴うコンパイル エラーが発生する可能性がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。