queue.go (530B)
1 package dsa 2 3 type Queue struct { 4 items []interface{} 5 } 6 7 func (q *Queue) Enqueue(item interface{}) { 8 q.items = append(q.items, item) 9 } 10 11 func (q *Queue) EnqueueSlice(items []interface{}) { 12 for _, item := range items { 13 q.Enqueue(item) 14 } 15 } 16 17 func (q *Queue) Dequeue() (item interface{}, flag bool) { 18 if q.IsEmpty() { 19 return nil, false 20 } else { 21 head := q.items[0] 22 q.items = q.items[1:] 23 return head, true 24 } 25 } 26 27 func (q *Queue) IsEmpty() bool { 28 return q.Size() == 0 29 } 30 31 func (q *Queue) Size() int { 32 return len(q.items) 33 }