Skip to content
UdemyGoPaid courseIntermediate levelCertificate

Working with Concurrency in Go (Golang) (Udemy.com)

Learn the advantages and pitfalls of concurrent programming with the Go programming language

Created by: Trevor Sawler

Last updated June 2024

icon
What you will learn

  • Learn about the various ways Go makes working with concurrent programing simple
  • Understand how concurrency works, and its advantages and pitfalls
  • Learn how WaitGroups, Mutexes, and channels work
  • Master concurrency by working with classic computer science problems, and by building a real-world example

icon
Quality Score

No CourseDuck member has rated this course yet. Taken it? Give each part a thumbs up or down.

Content Quality
/
Video Quality
/
Qualified Instructor
/
Course Pace
/
Course Depth & Coverage
/

Overall Score : 94 / 100

icon
Course Description

Go, often referred to as Golang, is well-known for making it remarkably easy to work with concurrency. In order to make a particular function run concurrently, all we have to do is prepend the word "go" to the function call, and it cheerfully runs in the background, as a GoRoutine. Go's built in scheduler takes are of making sure that a given GoRoutine runs when it should, and as efficiently as it can.

However, this does not mean that working with concurrency is simple in Go—thread safe programming takes careful planning, and most importantly it requires that developers have an absolutely solid understanding of how Go deals with concurrency.

In the standard library, Go offers us several ways of dealing with concurrently running parts of our program, right in the standard library: sync.WaitGroup, which lets us wait for tasks to finish; sync.Mutex, which allows us to lock and unlock resources, so that no two GoRoutines can access the same memory location at the same time; and finally, Channels, which allow GoRoutines to send and receive data to and from each other.

Go's approach to concurrency is fairly straightforward, and is more or less summed up this mantra: Don't communicate by sharing memory; instead, share memory by communicating. Channels are the means by which we usually share memory by communicating.

In this course, we'll cover the use of WaitGroups, Mutexes, and Channels, and we'll do so in detail. We'll also cover some of the problems inherent in concurrency, including early program termination and race conditions. Initially, we'll gain a good understanding of how these things work by solving some of the classic problems found in the field of computer science, including the Dining Philosophers, the Producer/Consumer problem, and the Sleeping Barber. These problems are classics for a reason: they force a developer to figure out the best approach to working with code that run concurrently, or in parallel.

Finally, we'll finish the course out with a more "real-world" problem, where we have to register a customer for some kind of subscription service, and take care of invoicing, registration, and all the things necessary to get a new customer up and running. We'll do so, naturally, as quickly as we can by dividing the necessary tasks up into smaller tasks, and having them run concurrently.

Please note that this course requires you to download Docker Desktop from Docker. If you are a Udemy Business user, please check with your employer before downloading software.

icon
Udemy Discount

The discount is applied through our link. Open the course from here and Udemy's current promotional price is applied at checkout on most courses, no code to type.

Some courses are excluded from Udemy's promotions. If the price does not drop, clear your browser cookies and use the button again.

icon
Instructor Details

Trevor Sawler

I have twenty years of experience in professional software development, and twenty years of experience as a University professor.

As an entrepreneur, I have worked with a broad range of clients, including Thomson Nelson, Hewlett Packard, the Royal Bank of Canada, Keybank, Sprint, and many, many others. I also have extensive management and project management experience. I have led teams of fifty developers and artists on multi-million dollar projects, and much smaller teams on much smaller projects.

As a professor, I have taught in a wide variety of course areas, including Computer Science, English, Irish, and American literature, and a number of "crossover" courses that bridge the liberal arts and technological fields.

I have won regional, national, and international awards for my work in the IT field, and have also won awards for my teaching and research as a University professor.

icon
More courses by Trevor Sawler

$84.99

$89.99

$84.99

$84.99

$84.99

$64.99

icon
More Go courses

$54.99

$19.99

$99.99

$99.99

$64.99

$89.99

icon
Reviews

4.7

1,862 ratings on Udemy

Select a bar to show only those reviews.Select the bar again to show every rating.

By Jorge P.M. on 5/26/2026

- I'm missing a little bit more exercises - Some files for Windows are not correct (at least they don't work in my Laptop and had to correct them)

By Ahmed Ahmed on 4/20/2026

A very good course with clear and well-structured explanations. The instructor made the topics easy to understand, and the examples were very helpful. I learned a lot and would definitely recommend it.

By Booker T on 3/27/2026

I've bought nearly all of Trevor Sawler's Udemy courses because he is an excellent communicator and Go developer. I highly recommend his courses for his unique approach to teaching. The one criticism I would add is that sometimes he misses some details and they'll be staring him right in the face. But I think that just comes from trying to teach and do at once. Many of them he goes back and fixes later. One example can be found in his testing section: ```go // cmd/web/handlers_test.go // Sawler neglects to change to `rr.Code != e.expectedStatusCode`. if rr.Code != http.StatusOK { t.Errorf("%s failed; expected %d, but got %d", e.name, e.expectedStatusCode, rr.Code) } ```

By Arkadipta Das on 1/22/2026

Thank you so much for this wonderful course on Go's concurrency model. An amazing job from Trevor

By Tomas Svojanovsky on 1/17/2026

This was a very enjoyable course. Some parts were more challenging, so I had to rewatch them, but that actually helped deepen my understanding. I especially appreciate the section about testing. Testing is often underestimated, and this course provides a very solid blueprint for how to test concurrent Go code properly. Overall, a high-quality course that goes beyond basics and focuses on real-world practices.

By Francisco Gonzalez on 12/30/2025

I’ve taken several courses by Trevor Sawler, and this concurrency course continues to reinforce why I’m such a big fan of his teaching style. Trevor has a rare ability to take complex topics—like concurrency—and break them down in a way that’s clear, approachable, and practical. I come into each of his courses as a learner who’s new to the subject, and I leave feeling confident, capable, and genuinely satisfied with what I’ve learned. The explanations are well-paced, the examples are relevant, and the concepts build naturally on one another without feeling overwhelming. By the end of the course, I wasn’t just following along—I actually understood why things worked the way they did. If you’re looking for a course that teaches real understanding (not just surface-level syntax), I highly recommend this one. Trevor’s courses consistently deliver, and this one is no exception.

By Matheus da Silva Alves on 12/4/2025

The instructor has a lot of knowlodge on the matter, and shows different ways to use concurrency with Golang, but, if you don't know anything about Golang, I suggest you find an intro course prior to this one.

By Kyrylo Dudka on 8/31/2024

I'm a newbie in Go and I learned a lot from this course and other courses from this author. I absolutely recommend this course and all courses from this author(I'm already finished one and bought 3 more courses). You should understand that you should follow some points by your own and try to learn on the fly, but the basics and understanding of how a lot of things work in Go you can reach(this course includes testing section as well as other courses and it's great).

By Toni Kolehmainen on 8/8/2022

Overall very enjoyable learning experience. Some of the topics could use some more context - sometimes we are just typing things not really knowing their purpose or functionality. Also there are few errors which were left unnoticed and could cause some issues along the line while troubleshooting.

By Leonardo Guedez on 8/8/2022

It was good, covered a lot of topics that I had to learn for the job, and also taught me new things and concepts. But one thing I would encourage is to explain the "why" of some things. When he's teaching how to fix some "unintentional" bugs, sometimes he just shows the answer and goes on, but it would be more valuable to explain why that was a bug in the first place, and how or why that answer is fixing it. Other than that for me, this is an incredible good course, covers many topics, and the instructor is very concise and knowledgeable

Showing all 10 reviews on CourseDuck

Read all 1,862 reviews on Udemy