引用判断:只是判断内存地址是不是一样的。
a := []int{1, 2, 3}
b := a
c := make([]int, len(a))
copy(c, a)
fmt.Println(a == b) // true,因为它们引用相同的内存地址
fmt.Println(a == c) // true,因为它们引用相同的内存地址
对象判断:会判断内存地址、判断数据结构、判断属性的值。
type Person struct {
Name string
Age int
}
p1 := Person{"Alice", 25}
p2 := Person{"Alice", 25}
p3 := Person{"Bob", 30}
// 判断对象
fmt.Println(reflect.DeepEqual(p1, p2)) // true,内容相同
fmt.Println(reflect.DeepEqual(p1, p3)) // false,内容不同
如果 Person 里面的属性有引用类型的,就会按照引用判断。