ホームページ >バックエンド開発 >Golang >Go でマップの等価性をテストするには?

Go でマップの等価性をテストするには?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-13 09:46:021031ブラウズ

How to Test Map Equivalence in Go?

Go でのマップの等価性のテスト

テーブル駆動テストでは、マップの等価性をテストするという課題が生じます。長さとキーと値のペアを手動で確認するのは、特にさまざまなマップ タイプに対して繰り返す場合に面倒になります。

慣用的な解決策

慣用的な解決策では、Go 標準ライブラリのリフレクト パッケージを利用します。 reflect.DeepEqual 関数は 2 つのインターフェース引数を受け取り、次の方法で等しいかどうかをチェックします。

  1. それらの nil 値の比較
  2. それらの長さの比較 (マップなどのデータ構造の場合)
  3. 構成要素 (マップ内のキーと値のペア) の同等性を再帰的にチェックする

import "reflect"

func TestMapEquality(t *testing.T) {
    m1 := map[string]int{"foo": 1, "bar": 2}
    m2 := map[string]int{"foo": 1, "bar": 2}
    eq := reflect.DeepEqual(m1, m2)
    if !eq {
        t.Errorf("Maps not equal: %v", m1, m2)
    }
}

追加メモ

  • reflect.DeepEqual は任意の有効なマップ タイプで動作するため、多用途のソリューションになります。
  • interface{} 引数を受け入れるため、渡された値が
  • 関数の再帰的な性質により、ネストされたデータ構造であっても同等かどうか徹底的に比較されます。

以上がGo でマップの等価性をテストするには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。