# queue 基于链表实现的先进先出队列(哨兵头结点风格)。 > 迁移自 go-hua/queue,代码保持原样。 ## 用法 ```go import "git.zeroonesoft.cn/golib/zogo/queue" // 头结点作为哨兵,Create 批量建队 q := &queue.QueueNode{} q.Create(1, 2, 3) q.Length() // 3 // Push 入列(追加队尾)/ Pop 出队 q.Push(4) v := q.Pop() // 在头结点上调用:返回头结点自身 Data(哨兵为 nil),队列前进一个节点 q.Print() // 打印剩余元素 ``` 完整可运行例程:[examples/queue/main.go](../examples/queue/main.go) ## 注意 - `Pop` 语义特殊:在**哨兵头结点**上调用,返回的是哨兵自身的 `Data`(通常为 nil) 并让队列前进一格;取真正的队头元素请在 `q.Next` 上调用或先取 `q.Next.Data`。 - `Pop` 在队列仅剩哨兵(`Next == nil`)时调用会 panic,出队前先判断 `Length()`。 - 元素为 `interface{}`,非泛型非并发安全,多 goroutine 场景需外加拉锁。