package main import ( "strconv" ) func getDisplayName(qba []byte) string { if len(qba) ==0 { return "" } ret := strconv.Quote(string(qba)) return ret[1 : len(ret)-1] } // ReverseSlice reverses a slice. // @ref https://stackoverflow.com/a/28058324 func ReverseSlice[S ~[]E, E any](s S) { for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 { s[i], s[j] = s[j], s[i] } } // CopySliceAdd copies a slice and adds one more thing on the end. func CopySliceAdd[T comparable](base []T, and T) []T { ret := make([]T, len(base)+1) copy(ret, base) ret[len(ret)-1] = and return ret } // Apply creates a new slice where every element of the input arr is transformed. func Apply[T comparable](arr []T, transform func(T) T) []T { ret := make([]T, len(arr)) for i := 0; i < len(arr); i++ { ret[i] = transform(arr[i]) } return ret }