Yes. Please remember that you will still need the main goroutine alive for these to finish before the program ends. You can use something like sync.WaitGroup:
wg := new(sync.WaitGroup)
for key := range Map {
wg.Add(1)
go func() {
subroutine(Map[key])
wg.Done()
}
}
wg.Wait()
Or if you have something like a server loop going on in the main routine you may not need that at all since your program won't finish until a relevant signal is externally sent to it.
Hope that helps.