go中类型比较
不能直接比较的类型:切片、map、函数、函数数组
相同长度的基础数组可以比较,而不同长度的基础数组不能参与比较。(原因是在‘数组’类型中,数组长度也属于类型的一部分)
示例
type data struct {
num int
checks [10]func() bool // 无法比较
doIt func() bool // 无法比较
m map[string]string // 无法比较
bytes []byte // 无法比较
}
type data2 struct {
num int
fp float32
complex complex64
str string
char rune
yes bool
events <-chan string
handler interface{}
ref *byte
raw [10]byte
ac [3]<-chan int
t struct {
name string
age int
}
ptr unsafe.Pointer
err error
reader io.Reader
}
func main() {
//v1 := data{}
//v2 := data{}
//fmt.Println("v1 == v2: ", v1 == v2) //cannot compare
fmt.Println("===")
v1 := data2{handler: "a"}
v2 := data2{handler: "a"}
v3 := data2{handler: "b"}
fmt.Println("v1 == v2: ", v1 == v2) // true
fmt.Println("v1 == v3: ", v1 == v3) // false
fmt.Println("===")
var a = [2]int{1,2}
var b = [2]int{1,2}
//var c = [3]int{1,2,3}
fmt.Println("a == b: ", a == b) // true
//fmt.Println("a == c: ", a == c) // cannot compare
}