image
WaitGroups
Start course
Difficulty
Beginner
Duration
2h 17m
Students
3761
Ratings
4.6/5
starstarstarstarstar-half
Description

If you're thinking about engineering the next big dotcom application then you should seriously consider using Go!! 

The Go Programming Language is without doubt one of the hottest languages to learn, particularly in this cloud native era. More and more companies are adopting Go to engineer highly performant, stable and maintainable applications. Popular projects such as Docker, Kubernetes, Terraform, Etcd, Istio, InfluxDB have all been built successfully using Go!! 

This introductory level training course is designed to bring you quickly up to speed with the many key features that the Go programming language provides. You'll also learn how to setup your own Go development environment - consisting of the Go toolchain, Visual Studio Code, and several related Go based extensions - all to ensure that you are able to be productive writing your own source code.

We’d love to get your feedback on this course, so please give it a rating when you’re finished. If you have any queries or suggestions, please contact us at support@cloudacademy.com.

Learning Objectives

By completing this course, you will:

  • Learn about what makes Go a great language
  • Learn how to install the Go toolchain
  • Learn how to setup Visual Studio Code to edit and debug Go programs
  • Learn how to work with the Go Playground to test and run snippets of Go code
  • Learn and understand the basic Go language syntax and features
  • Learn how to use the Go tool chain commands to compile, test, and manage Go code
  • And finally, you’ll learn how to work with and manage Go modules for module dependency management

Intended Audience

This course is intended for:

  • Anyone interested in learning the Go Programming Language
  • Software Developers interested in using Go to compile and test Go based applications
  • DevOps practitioners looking to learn about Go to support Go based applications

Prerequisites

To get the most from this course, you should have at least:

  • A basic understanding of software development and the software development life cycle

Source Code

All sample Go source code as used and demonstrated within this course can be found here:

Transcript

- [Jeremy Cook] Goroutines can also easily be declared using anonymously declared functions, as is demonstrated here. One off blocks of code can be launched as a goroutine to ensure that they are non-blocking against the remainder of the program. This can be seen on lines 12 to 15 and then again on lines 18 to 21. Additionally, in this example I've introduced the concept of a WaitGroup. 

A WaitGroup is used to help the overall program manage and halt itself until all tagged goroutines have returned. Setting up and implementing a WaitGroup is a fairly straightforward process. First of all import the sync package as seen on line five. Next declare a WaitGroup variable and then call the Add function once per launched goroutine, seen on lines 11 and 17. 

Within each goroutine, defer a call to the Done function on the WaitGroup variable as per lines 13 and 19. Finally, in the main function thread, which in this case is the end of the main function, make a call to the Wait function on the WaitGroup variable. Launching this example, we can examine the resulting output. With everything in place, the WaitGroup manages the goroutines and knows exactly how long to halt the main thread to allow all tagged goroutines enough time to complete their execution, as can be seen by the produced output. 

In summary, you have observed how to create anonymously declared goroutines and how to use WaitGroups to halt the main program's execution until all goroutines have completed.

About the Author
Students
132675
Labs
68
Courses
112
Learning Paths
183

Jeremy is a Content Lead Architect and DevOps SME here at Cloud Academy where he specializes in developing DevOps technical training documentation.

He has a strong background in software engineering, and has been coding with various languages, frameworks, and systems for the past 25+ years. In recent times, Jeremy has been focused on DevOps, Cloud (AWS, Azure, GCP), Security, Kubernetes, and Machine Learning.

Jeremy holds professional certifications for AWS, Azure, GCP, Terraform, Kubernetes (CKA, CKAD, CKS).

Covered Topics