登录
首页 >  Golang >  Go问答

使用 Golang 中的字段判断来确定结构体的相等性

来源:stackoverflow

时间:2024-02-23 09:33:24 217浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《使用 Golang 中的字段判断来确定结构体的相等性》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

我目前正在使用 go-cmp 包来比较结构相等性。出于测试目的,我需要比较两种不同类型的结构,它们应该具有相同的字段和相同的值。

作为一个最小的示例,我遇到了这样的问题:cmp.equal() 函数为不同类型返回 false,即使它们具有相同的字段和值。

type s1 struct {
    Name string
}

type s2 struct {
    Name string
}

p1 := s1{Name: "John"}
p2 := s2{Name: "John"}

fmt.Println(cmp.Equal(p1, p2)) // false

这是可以理解的,因为两种类型不同,但是有没有办法指示 cmp.equal() 忽略类型并只查看字段?


正确答案


我不知道在比较过程中是否可以省略类型,但是如果两个结构类型具有相同的字段,您可以将一个类型转换为另一种类型,所以这不会成为问题:

p1 := s1{Name: "John"}
p2 := s2{Name: "John"}

fmt.Println(cmp.Equal(p1, p2)) // false
fmt.Println(cmp.Equal(p1, s1(p2))) // true

Go Playground 上尝试一下。

本篇关于《使用 Golang 中的字段判断来确定结构体的相等性》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>