DEV Community

Discussion on: Attempting to Learn Go - Listing Files By Extension

Collapse
dirkolbrich profile image
Dirk Olbrich • Edited on

Edit: sorting the ˋ[]stringˋ within the ˋmap[string][]stringˋ. The map itself can't be sorted.

Thread Thread
detunized profile image
Dmitry Yakimenko

I don't have a map in my version. I sort an array by a predicate.

Thread Thread
dirkolbrich profile image
Dirk Olbrich

Yes, I have seen it. Your approach is different by just sorting a list of filenames. The orginal intent is to sort files by extension into different buckets.

Your use of filepath.Ext() is quit clever. Haven't thought of that.

Thread Thread
dirkolbrich profile image
Dirk Olbrich • Edited on

This would make the example even shorter:

var m = make(map[string][]string)
for _, file := range dir {
    if !file.IsDir() {
        fileName := file.Name()
        ext := filepath.Ext(fileName)
        m[ext] = append(m[ext], fileName)
    }
}
for ext := range m { sort.Strings(m[ext]) }
Thread Thread
shindakun profile image
Steve Layton Author

@detunized @dirkolbrich

Thanks for the replies! filepath.Ext()! Didn't occur to me to try that. It goes to show that the standard library really is pretty complete.

Dirk, I like the for ext := range m { sort.Strings(m[ext]) } solution then I wouldn't need to have a separate sort in each "print" function, it's much clearer that way.