1.go struct能不能比较?
当结构体内含有不可比较的类型(Slice, Map, 和Function)时,不可以比较,反之可以比较。
sm1 := struct {
age int
m map[string]string
}{age: 11, m: map[string]string{"a": "1"}}
sm2 := struct {
age int
m map[string]string
}{age: 11, m: map[string]string{"a": "1"}}
//结构体是相同的,但是结构体属性中有不可以比较的类型,如map,slice,所以不可比较
if sm1 == sm2 {
fmt.Println("sm1 == sm2")
}
两个不同的struct的实例不可以强制转换,强转之后可以比较
type T2 struct {
Name string
Age int
Arr [2]bool
ptr *int
}
type T3 struct {
Name string
Age int
Arr [2]bool
ptr *int
}
func main() {
var ss1 T2
var ss2 T3
// Cannot use 'ss2' (type T3) as type T2 in assignment
//ss1 = ss2
ss3 := T2(ss2)
fmt.Println(ss3==ss1) // true
}
当struct可以比较时,可以作为map中的key。
有疑问加站长微信联系(非本文作者)