Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > go判断两个结构体相等

Golang 中判断两个结构体相等的方法

作者:农夫小田

这篇文章主要介绍了Golang 中如何判断两个结构体相等,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

结论

golang中,哪些数据类型是可比较的,哪些是不可比较的:

同一个struct的两个实例能不能比较

type S struct {
    Name    string
    Age     int
    Address *int
}
func main() {
    a := S{
        Name:    "aa",
        Age:     1,
        Address: new(int),
    }
    b := S{
        Name:    "aa",
        Age:     1,
        Address: new(int),
    }
   fmt.Println(a == b)   // false
}

输出false,说明:

type S struct {
    Name    string
    Age     int
    Address *int
   Data    []int
}
func main() {
    a := S{
        Name:    "aa",
        Age:     1,
        Address: new(int),
      Data:    []int{1, 2, 3},
    }
    b := S{
        Name:    "aa",
        Age:     1,
        Address: new(int),
      Data:    []int{1, 2, 3},
    }
   fmt.Println(a == b)  // invalid operation: a == b (struct containing []int cannot be compared)
}

报错:Slice,Map,Function不可比较

结构体比较推荐用法

type S struct {
    Name    string
    Age     int
    Address *int
   Data    []int
}
func main() {
    a := S{
        Name:    "aa",
        Age:     1,
        Address: new(int),
      Data:    []int{1, 2, 3},
    }
    b := S{
        Name:    "aa",
        Age:     1,
        Address: new(int),
      Data:    []int{1, 2, 3},
    }
   fmt.Println(reflect.DeepEqual(a, b))  // true
}

DeepEqual函数用来判断两个值是否深度一致。具体比较规则如下:

到此这篇关于Golang 中如何判断两个结构体相等的文章就介绍到这了,更多相关go判断两个结构体相等内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文