Golang fila

package main

import (
	"fmt"
)

type Queue[T any] struct {
	elements []T
}

func NewQueue[T any]() *Queue[T] {
	return &Queue[T]{}
}

func (queue *Queue[T]) Enqueue(element T) {
	queue.elements = append(queue.elements, element)
}

func (queue *Queue[T]) Dequeue() T {
	element := queue.elements[0]
	queue.elements = queue.elements[1:len(queue.elements)]
	return element
}

func (queue *Queue[T]) Front() T {
	return queue.elements[0]
}

func (queue *Queue[T]) IsEmpty() bool {
	return len(queue.elements) == 0
}

func (queue *Queue[T]) Size() int {
	return len(queue.elements)
}

func main() {
	queue := NewQueue[int]()
	queue.Enqueue(10)
	fmt.Println(queue.Dequeue())
}
Ibrahim Albarghouthi