package stringutil import "sort" func MapKeys(m map[string]string) <-chan string { ch := make(chan string) if m == nil { close(ch) } else { go func(ch chan<- string) { defer close(ch) keys := make([]string, 0, len(m)) for k := range m { keys = append(keys, k) } sort.Strings(keys) for _, k := range keys { ch <- k } }(ch) } return ch }