• 结构体只能比较是否相等,但是不能比较大小;
    • 相同类型的结构体才能进行比较,结构体是否相同不但与属性类型有关,还与属性顺序相关;
    • 如果struct的所有成员都可以比较,则该struct就可以通过==或!=进行比较是否相同,比较时逐个项进行比较,如果每一项都相等,则两个结构体才相等,否则不相等;

    可以比较的有: bool、数值型、字符、指针、数组等
    不能比较的有: slice、map、函数

    1. func main() {
    2. sn1 := struct {
    3. age int
    4. name string
    5. }{age: 11, name: "qq"}
    6. sn2 := struct {
    7. age int
    8. name string
    9. }{age: 11, name: "11"}
    10. if sn1 == sn2 {
    11. fmt.Println("sn1 == sn2")
    12. }
    13. sm1 := struct {
    14. age int
    15. m map[string]string
    16. }{age: 11, m: map[string]string{"a": "1"}}
    17. sm2 := struct {
    18. age int
    19. m map[string]string
    20. }{age: 11, m: map[string]string{"a": "1"}}
    21. if sm1 == sm2 { // invalid operation: sm1 == sm2
    22. fmt.Println("sm1 == sm2")
    23. }
    24. }