Go でのマップの比較
Go でテーブル駆動テストを作成する場合、開発者はマップを比較する必要に遭遇することがよくあります。一般的なアプローチは、マップを文字列に変換し、同等のマップが同じ文字列表現を持つという前提に基づいて文字列を比較することです。ただし、このアプローチには制限があります。
reflect.DeepEqual を使用したリフレクトベースの比較
マップを比較するより信頼性が高く慣用的な方法は、Go のリフレクション パッケージを使用することです。 reflect.DeepEqual 関数を使用すると、マップを含む 2 つの値を詳細に比較できます。
マップのコード例比較
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 サイトの他の関連記事を参照してください。