テーブル駆動テストでは、2 つのマップの同等性を主張することが重要です。カスタム実装と文字列変換は面倒な場合がありますが、Golang は組み込みのソリューションを提供します。
reflect パッケージは、マップを含む値を再帰的に比較する DeepEqual 関数を提供します。
import "reflect" eq := reflect.DeepEqual(m1, m2)
この包括的な比較により、正確な同等性が保証されます。任意のタイプのマップのテスト (例: map[string]bool、マップ[構造体{}]インターフェース{})。引数としてインターフェイス タイプが必要であることに注意してください。
reflect.DeepEqual の Map ケースのソース コードは次のことを明らかにします。
if p, ok := v1.(reflect.Map); ok && q, ok := v2.(reflect.Map) { if p.Len() != q.Len() { return false } for _, k := range p.Keys() { if !q.Has(k) || !DeepEqual(p.Elem(k).Interface(), q.Elem(k).Interface()) { return false } } return true }
nil 値、マップ長を検証します。 、およびキーと値のペア。インターフェイスの型を渡すことで、さまざまなマップ実装との互換性が保証されます。
Golang でマップの同等性をテストするために Reflect.DeepEqual を使用することは、慣用的で効率的なソリューションです。すべてのエッジケースを処理し、あらゆるタイプのマップを正確に比較します。これにより、テーブル駆動テストが簡素化され、コードの信頼性が向上します。
以上がGolang でマップの等価性をテストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。