Go で潜在的な null ptr 逆参照を伴うコンパイル エラーが発生する可能性がありますか?

WBOY
リリース: 2024-02-08 21:50:21
転載
751 人が閲覧しました

在 Go 中,我可能会遇到潜在的 null ptr 取消引用的编译错误吗?

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

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!