This program demonstrates the implementation of a queue using an array in Go. The queue supports enqueue, dequeue, peek, and empty operations, functioning as a FIFO (First In First Out) data structure.

Program Code

package main

import (
    "fmt"
)

// Queue represents the queue structure
type Queue struct {
    items []int
}

// NewQueue creates a new Queue
func NewQueue() *Queue {
    return &Queue{items: []int{}}
}

// Enqueue adds an item at the end of the queue
func (q *Queue) Enqueue(item int) {
    q.items = append(q.items, item)
}

// Dequeue removes the item at the front of the queue and returns it
func (q *Queue) Dequeue() int {
    if len(q.items) == 0 {
        fmt.Println("Queue is empty")
        return -1 // Assuming -1 is an error value for empty queue
    }
    item := q.items[0]  // get the front item
    q.items = q.items[1:]  // remove the front item
    return item
}

// Peek returns the item at the front of the queue without removing it
func (q *Queue) Peek() int {
    if len(q.items) == 0 {
        fmt.Println("Queue is empty")
        return -1 // Assuming -1 is an error value for empty queue
    }
    return q.items[0]
}

// IsEmpty returns true if the queue is empty
func (q *Queue) IsEmpty() bool {
    return len(q.items) == 0
}

func main() {
    q := NewQueue()
    q.Enqueue(1)
    q.Enqueue(2)
    fmt.Println("Peek:", q.Peek())  // Outputs: Peek: 1
    fmt.Println("Dequeue:", q.Dequeue())  // Outputs: Dequeue: 1
    fmt.Println("Dequeue:", q.Dequeue())  // Outputs: Dequeue: 2
    fmt.Println("Is the queue empty?", q.IsEmpty())  // Outputs: Is the queue empty? true
}

Explanation

  • Queue Structure: The queue is implemented using a slice to hold the items. The struct Queue contains a slice of integers as its underlying storage.
  • Operations:
    • Enqueue adds an item to the end of the queue.
    • Dequeue removes the item from the front of the queue and returns it. It also handles the case where the queue is empty.
    • Peek returns the front item without removing it from the queue, also checking if the queue is empty.
    • IsEmpty checks and returns whether the queue is empty.

 

Running the Program

To execute this Go program:

  1. Save the code in a file named queue.go.
  2. Open a terminal or command prompt.
  3. Navigate to the directory where the file is stored.
  4. Run the program by typing go run queue.go.

The output will demonstrate the functionality of the queue, showing the results of enqueues, dequeues, and other operations, validating that the queue performs as expected according to the FIFO principle. Adjust the main function to test different scenarios and observe the behavior of the queue under various operations.

By Aditya Bhuyan

I work as a cloud specialist. In addition to being an architect and SRE specialist, I work as a cloud engineer and developer. I have assisted my clients in converting their antiquated programmes into contemporary microservices that operate on various cloud computing platforms such as AWS, GCP, Azure, or VMware Tanzu, as well as orchestration systems such as Docker Swarm or Kubernetes. For over twenty years, I have been employed in the IT sector as a Java developer, J2EE architect, scrum master, and instructor. I write about Cloud Native and Cloud often. Bangalore, India is where my family and I call home. I maintain my physical and mental fitness by doing a lot of yoga and meditation.

Leave a Reply

Your email address will not be published. Required fields are marked *

error

Enjoy this blog? Please spread the word :)