code: func Distinct(arr interface{}) (reflect.Value, bool) {
  	// create a slice from our input interface
  	slice, ok := takeArg(arr, reflect.Slice)
  	if !ok {
  		return reflect.Value{}, ok
  	}
  
  	// put the values of our slice into a map
  	// the key's of the map will be the slice's unique values
  	c := slice.Len()
  	m := make(map[interface{}]bool)
  	for i := 0; i < c; i++ {
  		m[slice.Index(i).Interface()] = true
  	}
  	mapLen := len(m)
  
  	// create the output slice and populate it with the map's keys
  	out := reflect.MakeSlice(reflect.TypeOf(arr), mapLen, mapLen)
  	i := 0
  	for k := range m {
  		v := reflect.ValueOf(k)
  		o := out.Index(i)
  		o.Set(v)
  		i++
  	}
  
  	return out, ok
  }
docs: // Distinct returns the unique vals of a slice
  //
  // [1, 1, 2, 3] >> [1, 2, 3]