Laurent Knauss Software Engineer
Go logo

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
}
    How to Code a Queue in Golang | Laurent