code: func (p *Pool) Put(s interface{}) {
  	slice := reflect.ValueOf(s)
  
  	if slice.Kind() != reflect.Slice {
  		panic(fmt.Sprintf("%+v is not a slice", slice))
  	}
  	for i, size := range p.sizes {
  		if slice.Cap() > size {
  			continue
  		}
  		p.buckets[i].Put(slice.Slice(0, 0).Interface())
  		return
  	}
  }
docs: // Put adds a slice to the right bucket in the pool.