package queue

type QueueInterface interface {
    enqueue(int)
    dequeue() int
}

type Queue[T any] []T

func (q *Queue[T]) Enqueue(v T) {
    *q = append(*q, v)
}

func (q *Queue[T]) Dequeue() T {
    x := (*q)[0]
    *q = (*q)[1:]
    return x
}

func (q *Queue[T]) IsEmpty() bool {
    if len(*q) == 0 {
        return true
    }
    return false;
}