Go的map为什么不允许slice作为key? map的查找需要一个『相等』(equal)的比较,然而切片并没有实现。 它还没有实现equal是因为在这些类型上没有很好地定义equal到底意味着什么? 这里面涉及到浅比较与深比较,指针与值的比较,如何处理递归类型等等。 我们可以重新审视这个问题 ,但是在没有明确思考好切片的equal应该是什么意思的时候,我们暂时不会实现它。 在Go 1中,与现有版本不同,为结构和阵列定义了equal,因此可以使用此类类型作为map的键key。 不过,切片仍然没有平等的定义。