code: func Slice(slicePtr interface{}, less func(i, j int) bool) {
  	v := reflect.ValueOf(slicePtr).Elem()
  	if v.Len() <= 1 {
  		return
  	}
  	sort.Slice(v.Interface(), less)
  
  	i := 0
  	for j := 1; j < v.Len(); j++ {
  		if !less(i, j) {
  			continue
  		}
  		i++
  		v.Index(i).Set(v.Index(j))
  	}
  	i++
  	v.SetLen(i)
  }
docs: // Slice sorts the slice pointed by the provided pointer given the provided
  // less function and removes repeated elements.
  // The function panics if the provided interface is not a pointer to a slice.