• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

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

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

    type s2 struct {
        name string
    }
    aa := s2{
        name: "aa",
    }
    bb := s2{
        name: "aa",
    }
    fmt.Printf("%v\n", aa == bb)

这个返回true

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

 

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

 

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

 

 返回结果 false;true

代码:

    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)

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go语言sync.Map(在并发中使用)发布时间:2022-07-10
下一篇:
RabbitMQ Go客户端教程3——发布/订阅发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap