如果我实现这样的队列......
package main
import(
"fmt"
)
func PopFront(q *[]string) string {
r := (*q)[0]
*q = (*q)[1:len(*q)]
return r
}
func PushBack(q *[]string, a string) {
*q = append(*q, a)
}
func main() {
q := make([]string, 0)
PushBack(&q, "A")
fmt.Println(q)
PushBack(&q, "B")
fmt.Println(q)
PushBack(&q, "C")
fmt.Println(q)
PopFront(&q)
fmt.Println(q)
PopFront(&q)
fmt.Println(q)
}
...我最终得到一个["A", "B", "C"]没有指向前两个元素的切片的数组。由于切片的“开始”指针永远不会递减(AFAIK),因此永远无法访问这些元素。
Go 的垃圾收集器足够聪明来释放它们吗?
森栏
相关分类