我是Golang的新手。当我尝试实现我的第一个优先级队列时,我发现 Push and Pop 函数需要使用成员的指针,但 Swap 不需要。
我知道,如果您在成员函数中使用指针,则意味着您可以更改实例本身而不是其副本。但是,为什么 Swap 可以使用副本而不是指针呢?
type maxHeap []int
func (max maxHeap) Len() int {
return len(max)
}
func (max maxHeap) Less(a, b int) bool {
return max[a] > max[b]
}
func (max maxHeap) Swap(a, b int) {
max[a], max[b] = max[b], max[a]
}
func (max *maxHeap) Push(a interface{}) {
*max = append(*max, a.(int))
}
func (max *maxHeap) Pop() interface{} {
x := (*max)[len(*max)-1]
*max = (*max)[0 : len(*max)-1]
return x
}
FFIVE
红颜莎娜
相关分类