map键值的疑问

iamcoming · · 2271 次点击
qkb_75_go
琴为心声
众所周知,map[key] 取值是对key求hash作查找索引的; 因为有hash冲突,所以还需要比较索引值是否符合,要用到 == 操作;int/string/interface/struct 等都定义了 == 操作,slice很特殊有基址和长度,没有定义 == 操作, 所以golang编译时,发现无法处理 slice==slice 的操作,就直接报错了。或许以后的 golang 版本会支持 slice作map的索引。
#1
更多评论
因为slice map还有function都是“不可比较的”,使用这几种类型的字段对应的struct也是“不可比较”的,map的键值必须要“可以比较”,因此会出错。
#2