golang struct 能否比较
分情况讨论
-
同一个 struct 实例化出来的不同对象
关键看 里边有没有不可比较的字段类型
-
不同struct 实例化出来的对象
- 是否可以强制转换——所有字段类型都可以转
- 是否包含:不可比较类型
可排序、可比较和不可比较
- 安装官方文档,可比较的类型 必须是 Assignability 可赋值性的
- 可排序的数据类型有三种,Integer,Floating-point,和String
- 可比较的数据类型除了上述三种外,还有
- Boolean,Complex,Pointer,Channel,Interface和Array
- 还有特定的 struct
- 不可比较的数据类型包括,Slice, Map, 和Function
- 不可比较的 struct
struct可以作为map的key么?
可以,也不可以
当 struct 不包含不可比较的类型,则该struct 属于 可比较类型
只要是可比较的类型,就可以作为索引,进行区分
参考
- 原文作者:战神西红柿
- 原文链接:https://tomatoares.github.io/posts/go/struct%E8%83%BD%E5%90%A6%E6%AF%94%E8%BE%83/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。