code: func (r *Ring) Values() []interface{} {
  	r.Lock()
  	defer r.Unlock()
  
  	if r.head == -1 {
  		return []interface{}{}
  	}
  	arr := make([]interface{}, 0, r.capacity())
  	for i := 0; i < r.capacity(); i++ {
  		idx := r.mod(i + r.tail)
  		arr = append(arr, r.get(idx))
  		if idx == r.head {
  			break
  		}
  	}
  	return arr
  }
docs: /*
  Values returns a slice of all the values in the circular buffer without modifying them at all.
  The returned slice can be modified independently of the circular buffer. However, the values inside the slice
  are shared between the slice and circular buffer.
  */