Introduction to Go, part 14: Goroutines

In this video, goroutines are introduced as well as some of the tools that are available to simply working with them.

Topics covered include:
– creating goroutines
– synchronizing goroutines
– controlling the level of parallelism in an application
– best practices

Follow me on Twitter @vansimke

For more training videos, feel free to check out my videos at (
where I have courses on Go, JavaScript, and many other topics.

If you aren’t familiar with Pluralsight and you want to check it out,
just let me know in the comments and I’ll get you setup with a 30-day trial.


Melpomenex says:

Thank you a lot for this informative video.

Prasad Surase says:

One thing to keep in mind when iterating over multiple values(array/slice), and passing the address of the variable(that holds the value for that iteration) to the go routine will also result in inconsistent output. IMO, always pass the go routine the actual value and not the address of the value.

Hindol Adhya says:

This video is really well made. Learnt a lot! Thanks!

Mage Front says:

Let’s say we have 100 tickets and 4 terminals to sell them, I can’t seem to find a better way than read write locks.

Chanlito says:

I’m coming from nodejs. Go seems weird.

paracha3 says:

love your work. very concise and well organized teaching style

Juulleeeeh says:

Hi I just want to ask what editor you’re using. I’m sure that’s not atom and definitely not sublime. Thank you!

Saurabh Mehta says:

This is sooooo helpful. I loved your teaching style.

Tudor Hulban says:

the code is dificult to follow on my 5.2 phone screen. i would hide left section to increase size at least twice.

Priyansh Sangule says:

Wow! Why is your content so underrated? It’s worth every bit of the effort you put! Thanks again!

Quasi84 says:

You should pass the waitgroup by reference into the functions. That way, you can put the wg declaration inside main and not have a global wg hanging around.

It becomes more clear what’s going on when you read the code and you can more quickly understand the code and do less scrolling. By keeping things to arguments, you will make it easier to see what the function needs. It will be very clear what the function needs from the outside world and you’ll avoid running into the trouble of renaming variables during refactoring when the program grows since things are in scope at all times.

So unless something really needs to be global, there’s no reason for it to be global. Most things can still be passed around as arguments.

I think this is a better practice, don’t you?

Geo Trump says:

This was an excellent video. You explained it better than anyone has ever done for me before!!!!

mahedi hasan says:


Tiago Melo says:

Very clear explanation!

Engineering Programming says:


Nico Calvo says:

You made everything so simple. Thanks for your effort.

V20 User says:

I’m a bit lose in mutex part. So using mutex in go routine will ignore the benefit of pararellism since it will run on single thread?

 Write a comment


Do you like our videos?
Do you want to see more like that?

Please click below to support us on Facebook!