go map键类型小记

一、Go语言map的键类型不可以是函数类型、字典类型和切片类型。因为map键值需要可以做hash操作,而func,map,slice不支持这些操作。

 

报错:

 

 

并且,一般struct可以支持hash操作,如果在struct里面包含slice等类型,就不行了:

 

 

 数组类型是可以用作key的:

 

 

 

 

二、Chan可以支持hash操作,是因为他的值是个指针:

 

 

 但是指针用作key的意义不大,因为再构造一个同样的struct,即使内部值一样,但是由于struct中成员channel的地址不一样,也不能再业务上实现想要的目的:

 

面对struct中包含不可hash的成员的情况,我们可以通过构造一个可以hash的标识,来代替struct本身成为key。比如:

 

 

 

posted @ 2022-09-01 11:45  _zxq  阅读(140)  评论(0编辑  收藏  举报