func main() {
var user_id interface{}
user_id = 123
var id int
id = 123
//这里不能赋值,因为类型不一样
//id = user_id
//但是这里可以判断,为什么不同的类型可以判断相等???
if user_id == id {
fmt.Println("相等", user_id)
} else {
fmt.Println("不相等", user_id)
}
}
你把interface{}看做structs
1、intreface的值是可比较的。如果两个interface 有相同的动态类型和相同的动态值,而且不为nil,那么这两个interface就是相同的
2、非interface类型X 和 intreface类型T,如果X实现了T, 那么x和t(x t 分代表X和T的值)就是可比较的。如果他们的值是相同的,那么他们就是equal
3、如果struct的所有field都是可比较的,那他们的值就是可比较的。
在go中,判断equal比较简单