ホームページ  >  記事  >  バックエンド開発  >  単体テストで Go スライスと NaN 要素を比較するにはどうすればよいですか?

単体テストで Go スライスと NaN 要素を比較するにはどうすればよいですか?

WBOY
WBOY転載
2024-02-12 13:00:09962ブラウズ

如何在单元测试中比较 Go 切片和 NaN 元素?

#php Editor Baicao Go スライスと NaN 要素の比較は、単体テストでよくある問題です。スライスを扱うとき、2 つのスライスが等しいかどうかを比較する必要があることがよくありますが、スライスに NaN 要素が含まれている場合、比較は複雑になります。 NaN は特別な浮動小数点数であり、数値ではないことを意味します。 Go では、数学パッケージの IsNaN 関数を使用して、浮動小数点数が NaN かどうかを判断します。スライス内の各要素を反復処理し、IsNaN 関数を使用して NaN かどうかを判断することで、スライス比較演算を実装できます。

質問の内容

単体テストで 2 つのスライスを比較する必要があります。assert パッケージでこの問題は解決すると思いますが、nan では機能しません。

リーリー

出力は次のとおりです:

リーリー

nan のプロパティの 1 つがそれ自体と等しくないことはわかっていますが、その一方で関数から期待どおりの結果を受け取ります。

この問題の解決方法を知りたいのですが、簡潔な単体テスト アサーションと明確な出力を取得するにはどうすればよいですか?

代わりに、assert の使用を避け、両方のスライスの各要素で math.isnan を呼び出すこともできますが、これは単体テストでは非常に冗長に見えます。

Solution

github.com/google/go-cmp/cmp パッケージを使用すると、より複雑な比較が可能になります。 cmpopts.equatenans を使用すると、nan を含む可能性のあるデータ構造を簡単に比較できます。

リーリー

以上が単体テストで Go スライスと NaN 要素を比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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