Go でマップを確実に比較するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-19 15:04:02
オリジナル
470 人が閲覧しました

How to Reliably Compare Maps in Go?

Go でのマップの比較

Go でテーブル駆動テストを作成する場合、開発者はマップを比較する必要に遭遇することがよくあります。一般的なアプローチは、マップを文字列に変換し、同等のマップが同じ文字列表現を持つという前提に基づいて文字列を比較することです。ただし、このアプローチには制限があります。

reflect.DeepEqual を使用したリフレクトベースの比較

マップを比較するより信頼性が高く慣用的な方法は、Go のリフレクション パッケージを使用することです。 reflect.DeepEqual 関数を使用すると、マップを含む 2 つの値を詳細に比較できます。

  • 両方のマップが nil ではないことを確認します。
  • マップの長さが同じです。
  • マップの (キー、値) のセットが同じです。ペア。
  • ​​

マップのコード例比較

reflect.DeepEqual を使用してマップを比較する次のコード例を考えてみましょう。

import (
    "fmt"
    "reflect"
)

func main() {
    m1 := map[string]int{"foo": 1, "bar": 2}
    m2 := map[string]int{"foo": 1, "bar": 2}

    eq := reflect.DeepEqual(m1, m2)
    if eq {
        fmt.Println("The maps are equal.")
    } else {
        fmt.Println("The maps are not equal.")
    }
}
ログイン後にコピー

reflect.DeepEqual を使用する利点

Reflect.DeepEqual を使用する利点は、あらゆるタイプのマップを比較するための堅牢かつ汎用的な方法が提供されることです。 (例:map[string]int、map[string]stringなど)。複雑なマップ比較を内部で処理し、エラーが発生しやすいカスタム ループの必要性を排除します。

以上がGo でマップを確実に比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート