package door import "log" type FIFOBuffer struct { data []int index int } func NewFIFOBuffer(maxsize int) FIFOBuffer { return FIFOBuffer{data: make([]int, maxsize)} } func (f *FIFOBuffer) Empty() bool { return f.index == 0 } func (f *FIFOBuffer) Push(value int) { if f.index >= len(f.data) { log.Panicf("Exceeded FIFOBuffer index %d size %d %#v", f.index, len(f.data), f.data) } f.data[f.index] = value f.index++ } func (f *FIFOBuffer) Pop() int { if f.index == 0 { log.Panicf("Pop from empty FIFOBuffer (size %d).", len(f.data)) } f.index-- return f.data[f.index] }