前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Go] 结构体/结构体指针是否可以比较 与 operator == is not defined 错误

[Go] 结构体/结构体指针是否可以比较 与 operator == is not defined 错误

作者头像
唯一Chat
发布2021-04-30 14:50:16
7960
发布2021-04-30 14:50:16
举报
文章被收录于专栏:陶士涵的菜地陶士涵的菜地

同一个struct的2个实例能不能比较 == != 答案:可以能、也可以不能

两个不同的struct的实例能不能比较 == != 答案:可以能、也可以不能

如果结构体的所有成员变量都是可比较的,那么结构体就可比较 如果结构体中存在不可比较的成员变量,那么结构体就不能比较

代码语言:javascript
复制
    type s2 struct {
        name string
    }
    aa := s2{
        name: "aa",
    }
    bb := s2{
        name: "aa",
    }
    fmt.Printf("%v\n", aa == bb)

这个返回true

如果是结构体指针 , 返回 false

当有不可比较字段的时候 , 编译期就会报错

换成结构体指针 , 就不会报错了

返回结果 false;true

代码:

代码语言:javascript
复制
    type s1 struct {
        one   map[string]string
        two   []string
        three string
    }

    a := &s1{
        one:   map[string]string{"aaa": "bbb"},
        two:   []string{"aaa", "bbb"},
        three: "aaaa",
    }
    b := &s1{
        one:   map[string]string{"aaa": "bbb"},
        two:   []string{"aaa", "bbb"},
        three: "aaaa",
    }
    c := a
    fmt.Printf("%v;%v", a == b, a == c)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-04-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档