3
0
2022-11-14 09:26:39 +01:00

27 lines
447 B
Go

package slice
import (
"reflect"
"sort"
"github.com/spf13/cast"
)
// Keys returns sorted map keys
//
// If input is not a map it will return an empty slice
func Keys(m interface{}) (kk []string) {
v := reflect.ValueOf(m)
if v.Kind() == reflect.Map {
kk = make([]string, 0, v.Len())
for _, kval := range v.MapKeys() {
if k := cast.ToString(kval.Interface()); k != "" {
kk = append(kk, k)
}
}
}
sort.Strings(kk)
return
}