1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| package main
import ( "fmt" "sort" )
type Ordered interface { type int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, uintptr, float32, float64, string }
type orderedSlice[T Ordered] []T
func (s orderedSlice[T]) Len() int { return len(s) } func (s orderedSlice[T]) Less(i, j int) bool { return s[i] < s[j] } func (s orderedSlice[T]) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
func OrderedSlice[T Ordered](s []T) { sort.Sort(orderedSlice[T](s)) }
func main() { s1 := []int32{3, 5, 2} fmt.Println(s1) OrderedSlice(s1) fmt.Println(s1)
s2 := []string{"jim", "amy", "tom"} fmt.Println(s2) OrderedSlice(s2) fmt.Println(s2) }
|