首頁  >  文章  >  後端開發  >  如何在 Go 中測試 Map 等價性?

如何在 Go 中測試 Map 等價性?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-13 09:46:02980瀏覽

How to Test Map Equivalence in Go?

在 Go 中測試映射等效性

在表驅動測試中,測試映射等效性的挑戰出現了。手動檢查長度和鍵值對變得乏味,尤其是在針對不同的地圖類型重複檢查時。

慣用解決方案

慣用解決方案利用 Go 標準庫的 Reflect 套件。 Reflect.DeepEqual 函數接受兩個interface{} 參數,並透過以下方式檢查是否相等:

  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 中測試 Map 等價性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn