type RingGrowing … // NewRingGrowing constructs a new RingGrowing instance with provided parameters. func NewRingGrowing(initialSize int) *RingGrowing { … } // ReadOne reads (consumes) first item from the buffer if it is available, otherwise returns false. func (r *RingGrowing) ReadOne() (data interface{ … } // WriteOne adds an item to the end of the buffer, growing it if it is full. func (r *RingGrowing) WriteOne(data interface{ … }