一、Go语言map的键类型不可以是函数类型、字典类型和切片类型。因为map键值需要可以做hash操作,而func,map,slice不支持这些操作。
报错:
并且,一般Struct可以支持hash操作,如果在struct里面包含slice,就不行了:
二、Chan可以支持hash操作,是因为他的值是个指针:
但是指针用作key的意义不大,因为再构造一个同样的struct,即使内部值一样,但是由于struct地址不一样,也不能再业务上实现想要的目的。
面对struct中包含不可hash的内容,我们可以通过构造一个可以hash的内容,来代替struct本身成为key。比如:
标签:map,hash,struct,类型,key,go,小记 From: https://www.cnblogs.com/zxq89/p/16646016.html