package connection func Reverse[T any](slice []T) []T { var reversed []T for i := len(slice) - 1; i >= 0; i-- { reversed = append(reversed, slice[i]) } return reversed } func First[T any](slice []T, first *int) []T { if len(slice) == 0 || first == nil { return slice[:] } if *first > len(slice) { *first = len(slice) } return slice[:*first] } func Last[T any](slice []T, last *int) []T { if len(slice) < 1 { return nil } if last == nil { return slice[:] } if *last < 0 { *last = 0 } var i int if *last >= len(slice) { i = 0 } else if *last == 0 { return nil } else { i = len(slice) - *last } return slice[i:] }