转自:https://blog.csdn.net/jcetpoor/article/details/108946530
如果是相同的无复杂类型的结构体创建的对象 可以直接使用 == 对比值和指针
简单类型
可排序的数据类型
整型Integer
浮点型Floating-point
字符串String
可以比较的数据类型
除了上述三种外,还有
Boolean,
Complex,
Pointer,
Channel,
Interface
Array
复杂类型 不可比较的数据类型
Slice
Map
Function
type User struct {
age int
name string
}
func main() {
user := User{
1,
"d",
}
user2 := User{
1,
"d",
}
fmt.Println(user == user2) //打印的结果是true 会去自动对比内部的属性是否相等
//但是如果结构体内部含有map,slice,Function 使用==比较编译会报错
}
如果不是同一个结构体 创建的两个对象 两个struct可以相互转换,且不包含不可比较的成员变量,转换成相同类型后可以使用==操作符
示例
type USER struct {
age int
name string
u Name
}
type Name struct {
a string
}
type USER2 struct {
age int
name string
u Name
}
func main() {
user := USER{
1,
"d",
Name{""},
}
user3 := USER2{
1,
"d",
Name{""},
}
user2 := USER(user3)
fmt.Println(user2 == user) //编译通过 打印结果是true
}