How to compare if two structs, slices or maps are equal?

后端 未结 5 2172
醉话见心
醉话见心 2020-11-28 02:30

I want to check if two structs, slices and maps are equal.

But I\'m running into problems with the following code. See my comments at the relevant lines.

<         


        
5条回答
  •  有刺的猬
    2020-11-28 03:12

    Since July 2017 you can use cmp.Equal with cmpopts.IgnoreFields option.

    func TestPerson(t *testing.T) {
        type person struct {
            ID   int
            Name string
        }
    
        p1 := person{ID: 1, Name: "john doe"}
        p2 := person{ID: 2, Name: "john doe"}
        println(cmp.Equal(p1, p2))
        println(cmp.Equal(p1, p2, cmpopts.IgnoreFields(person{}, "ID")))
    
        // Prints:
        // false
        // true
    }
    

提交回复
热议问题