45 lines
751 B
Go
45 lines
751 B
Go
package logic
|
|
|
|
type Item interface {
|
|
}
|
|
|
|
// Item the type of the queue
|
|
type ItemQueue struct {
|
|
items []Item
|
|
}
|
|
|
|
type ItemQueuer interface {
|
|
New() ItemQueue
|
|
Enqueue(t Item)
|
|
Dequeue() *Item
|
|
IsEmpty() bool
|
|
Size() int
|
|
}
|
|
|
|
// New creates a new ItemQueue
|
|
func (s *ItemQueue) New() *ItemQueue {
|
|
s.items = []Item{}
|
|
return s
|
|
}
|
|
|
|
// Enqueue adds an Item to the end of the queue
|
|
func (s *ItemQueue) Enqueue(t Item) {
|
|
s.items = append(s.items, t)
|
|
}
|
|
|
|
// dequeue
|
|
func (s *ItemQueue) Dequeue() *Item {
|
|
item := s.items[0] // 先进先出
|
|
s.items = s.items[1:len(s.items)]
|
|
|
|
return &item
|
|
}
|
|
|
|
func (s *ItemQueue) IsEmpty() bool {
|
|
return len(s.items) == 0
|
|
}
|
|
|
|
// Size returns the number of Items in the queue
|
|
func (s *ItemQueue) Size() int {
|
|
return len(s.items)
|
|
} |