在Go中实现临时队列数据结构的一种简单方法是使用切片:
- 排队你使用内置追加功能。
- 要将你的第一个元素分开。
var queue []string queue = append (queue, "Hello ") // Enqueue queue = append(queue, "world!") for len(queue) > 0 { fmt.Print(queue[0]) // First element queue = queue[1:] // Dequeue }
注意 内存泄漏
您可能希望在出列之前删除第一个元素。
// Dequeue queue[0] = "" // Erase element (write zero value) queue = queue[1:]
Warning
永远不会返回为该数组分配的内存。对于长期存在的队列,您应该使用动态数据结构,例如 链表 。
Linked list容器/列表包实现了一个可以用作队列的 双向链表 。
queue := list.New() queue.PushBack("Hello ") // Enqueue queue.PushBack("world!") for queue.Len() > 0 { e := queue.Front() // First element fmt.Print(e.Value) queue.Remove(e) // Dequeue }