Go Select Statement

GoGoBeginner
Practice Now

This tutorial is from open-source community. Access the source code

Introduction

This challenge aims to test your knowledge of Go's select statement, which allows you to wait on multiple channel operations.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("`Go`")) -.-> go/ConcurrencyGroup(["`Concurrency`"]) go/ConcurrencyGroup -.-> go/select("`Select`") subgraph Lab Skills go/select -.-> lab-15423{{"`Go Select Statement`"}} end

Select

In this challenge, you are given two channels, c1 and c2, which will receive a value after some amount of time. Your task is to use select to await both of these values simultaneously, printing each one as it arrives.

Requirements

  • You should use the select statement to wait on both channels.
  • You should print the value received from each channel as it arrives.

Example

## We receive the values `"one"` and then `"two"` as
## expected.
$ time go run select.go
received one
received two

## Note that the total execution time is only ~2 seconds
## since both the 1 and 2 second `Sleeps` execute
## concurrently.
real 0m2.245s

Summary

This challenge tests your ability to use the select statement in Go to wait on multiple channel operations. By completing this challenge, you will gain a better understanding of how to use select to coordinate concurrent goroutines.

Other Go Tutorials you may like