gpt4 book ai didi

go - 比较golang中的超集对象

转载 作者:数据小太阳 更新时间:2023-10-29 03:22:52 24 4
gpt4 key购买 nike

我想比较两个对象

expected:= `"{\"method\":\"GET\",\"body\":{},\"uploadCount\":0}"` 

result := `"{\"name\":\"xyz\",\"method\":\"GET\",\"body\":{},\"uploadCount\":0}"`

现在我们可以看到结果是预期的超集,但是当我使用 reflect.deepequal 时,它说 false 因为它正好比较两个对象。我想比较结果是否是预期的超集。

 func main(){

result := "{\"name\":\"xyz\",\"method\":\"GET\",\"body\":{},\"uploadCount\":0}"

expected := "{\"method\":\"GET\",\"body\":{},\"uploadCount\":0}"

var _result interface{}
var _expected interface{}
json.Unmarshal([]byte(result),&_result)
json.Unmarshal([]byte(expected),&_expected)

reflect.deepequal(_result,_expected)

}

最佳答案

如果没有任何改进,你可以做类似的事情

func main() {

result := "{\"name\":\"xyz\",\"method\":\"GET\",\"body\":{},\"uploadCount\":0}"

expected := "{\"method\":\"GET\",\"body\":{},\"uploadCount\":0}"

var _result map[string]interface{}
var _expected map[string]interface{}

json.Unmarshal([]byte(result), &_result)
json.Unmarshal([]byte(expected), &_expected)

isSuperset := true

for k, v := range _expected {
if !reflect.DeepEqual(v, _result[k]) {
isSuperset = false
break
}
}

fmt.Println(isSuperset)
}

关于go - 比较golang中的超集对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50404946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com