Golang 结构体的比较

因为不知道如何比较结构体,所以我尝试了各种实验。

结论 (jié

保持参数进行比较:*object1 == *object2
通过哈希进行比较:object1 == object2
似乎是一个很好的选择。

实验代码


package main

type parent struct {
    name  string
    param int
    child
}

type child struct {
    name  string
    param int
}

func main() {
    childName := "foo"
    childParam := 1
    child1 := child{name: childName, param: childParam}
    child2 := &child{name: childName, param: childParam}

    println("###################")
    println("&child1", &child1)
    println("child2", child2)
    println("&*child2", &*child2)
    println("&child2", &child2)
    println("child equals result 1:", child1 == *child2)
    println("child equals result 2:", child1 == *&*child2)
    println("child equals result 3:", *&child1 == *child2)
    println("child equals result 4:", &child1 == *&child2)

    parentName := "tests"
    parentParam := 3
    parent1 := &parent{name: parentName, param: parentParam, child: child1}
    parent2 := &parent{name: parentName, param: parentParam, child: child1}

    println("###################")
    println(parent1)
    println(parent2)
    println("result:", *parent1 == *parent2)

}
广告
将在 10 秒后关闭
bannerAds