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; }