
A queue is a First-In-First-Out (FIFO) data structure.
Below is a generic Go implementation supporting Enqueue, Dequeue, Peek, and IsEmpty operations.
package main
import (
"fmt"
)
type Queue[T any] struct {
items []T
}
func (q *Queue[T]) Enqueue(item T) {
q.items = append(q.items, item)
}
func (q *Queue[T]) Dequeue() (T, error) {
var zero T
if len(q.items) == 0 {
return zero, fmt.Errorf("queue is empty")
}
item := q.items[0]
q.items = q.items[1:]
return item, nil
}
func (q *Queue[T]) Peek() (T, error) {
var zero T
if len(q.items) == 0 {
return zero, fmt.Errorf("queue is empty")
}
return q.items[0], nil
}
func (q *Queue[T]) IsEmpty() bool {
return len(q.items) == 0
}
func main() {
q := Queue[int]{}
q.Enqueue(10)
q.Enqueue(20)
front, _ := q.Peek()
fmt.Println("Front item:", front) // 10
q.Dequeue()
fmt.Println("Is queue empty?", q.IsEmpty()) // false
}