https://www.golangprograms.com/program-demonstrates-how-to-wait-for-goroutines-to-finish-execution.html