1.go struct能不能比較?
當(dāng)結(jié)構(gòu)體內(nèi)含有不可比較的類型(Slice, Map, 和Function)時(shí),不可以比較煤伟,反之可以比較。
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"}}
//結(jié)構(gòu)體是相同的木缝,但是結(jié)構(gòu)體屬性中有不可以比較的類型便锨,如map,slice,所以不可比較
if sm1 == sm2 {
fmt.Println("sm1 == sm2")
}
兩個(gè)不同的struct的實(shí)例不可以強(qiáng)制轉(zhuǎn)換我碟,強(qiáng)轉(zhuǎn)之后可以比較
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
}
當(dāng)struct可以比較時(shí)放案,可以作為map中的key。