Cases to know when using selection statements in Golang

In Go language, select statement is like switch statement , but in select statement, case statement refers to communication, i.e. sending or receiving operation on channel.

Cases to know when using selection statements in Golang

Syntax:

select{

case SendOrReceive1: // Lệnh
case SendOrReceive2: // Lệnh
case SendOrReceive3: // Lệnh
.......
default: // Lệnh

In this article, we will learn how to use default case to avoid deadlock. But first, we will learn what is deadlock case when using select command in Golang ?

Things to know about deadlock case in Golang

Deadlock: When you try to read or write data from a channel but the channel is not available. So it blocks the current execution of the goroutine and transfers control to other goroutines, but if no other goroutine is available or other goroutines are idle due to this situation, the program will crash. This phenomenon is called deadlock. As shown in the example below:

For example:

// Chương trình Go minh hoạc
// cách deadlock phát sinh
package main 

// Hàm chính
func main() { 

	// Tạo một kênh
	// Deadlock phát sinh bởi
	// không có goroutine đang viết
	// vào kênh này, vì thế
	// lệnh select đã bị khóa mãi mãi
	c := make(chan int) 
	select { 
	case <-c: }="" }="">

Result:

fatal error: all goroutines are asleep - deadlock!

goroutine 1 [chan receive]:
main.main()

To avoid this situation, we use default case in select statement. In other words, when deadlock occurs in the program, default case of select statement is executed to avoid deadlock. As in the example below, we use default case in select statement to avoid deadlock.

For example:

// Chương trình Go minh họa cách giải quyết
// vấn đề deadlock bằng case mặc định
package main 

import "fmt"

// Hàm chính
func main() { 

	// Tạo 1 kênh
	c := make(chan int) 
	select { 
	case <-c: default:="" fmt.println("!..="" default="" case..!")="" }="" }="">

Result:

!.. Default case..!

You are also allowed to use the default case when the select statement has only nil channel . As shown in the example below, channel c is nil, so the default case is executed if the default case here is not available, then the program will block forever and deadlock arises.

For example:

// Chương trình Go minh họa
// chạy case mặc định
package main 

import "fmt"

// Hàm chính
func main() { 

	// Tạo một kênh
	var c chan int

	select { 
	case x1 := <-c: fmt.println("value:="" ",="" x1)="" default:="" fmt.println("default="" case..!")="" }="" }="">

Result:

Default case..!
Sign up and earn $1000 a day ⋙

Leave a Comment

Keywords in Go

Keywords in Go

Keyword - Keywords are words in a language that are used for some internal processes or represent some predefined actions. Here is what you need to know about keywords in Golang.

Data types in Golang

Data types in Golang

Data types specify what type of data a valid Go variable can hold. In the Go language, types are divided into four categories as follows:

Function arguments in Golang

Function arguments in Golang

Go supports two main ways to pass arguments: Pass by Value and Pass by Reference. Go uses pass by value by default.

Function returning multiple values ​​in Golang

Function returning multiple values ​​in Golang

In Go language, you are allowed to return multiple values ​​from a function, using the return statement. In other words, in a function, a return statement can return multiple values.

Switch Statement in Go

Switch Statement in Go

Golang like most other programming languages ​​has switch statement. Here is how to use switch statement in Golang.

Anonymous structures and fields in Golang

Anonymous structures and fields in Golang

Anonymous structs in Golang are temporary structures with no names used for one-time purposes, while anonymous fields allow embedding of unnamed fields.

How to use Rune in Golang

How to use Rune in Golang

What is Rune in Golang? How to use Rune in Golang? This article will give you the answer.

How to use operators in Golang

How to use operators in Golang

Operators allow us to perform different types of operations on operands. In Go language, operators can be classified based on their different functions.

Void identifier in Golang

Void identifier in Golang

_(underscore) in Golang is called Blank Identifier. Identifier is a user-defined name of program elements used for identification purposes.

How to create basic program in Golang

How to create basic program in Golang

Hello, World! is the first basic program in any programming language. You can write this first program in Golang by following the steps below.

How to Install Go on Windows

How to Install Go on Windows

Golang can be easily installed on Windows. Here is a step-by-step guide to install Golang on Windows.

Methods with the same name in Golang

Methods with the same name in Golang

Golang allows creating two or more methods with the same name in the same package, but the receivers of these methods must be of different types.

Functions in Go

Functions in Go

In Go, functions are blocks of code that perform specific tasks, which can be reused throughout the program to save memory, improve readability, and save time.

Variable Scope in Go

Variable Scope in Go

The scope of a variable in Golang determines which part of the program the variable is accessible to. In Go, all identifiers have a lexical scope that is determined at compile time.

How to make cleaning fun

How to make cleaning fun

Cleaning doesn't have to be a chore if you know how to make it fun. Here are some simple ways to make cleaning fun.

What is the Infinity Fortress in Demon Slayer?

What is the Infinity Fortress in Demon Slayer?

Demon Slayer: Infinity Fortress is getting a lot of attention from fans. So what's inside Demon Slayer's Infinity Fortress? Let's find out together!

ChatGPT May Be Running Silently on Your Phone and How to Fix It

ChatGPT May Be Running Silently on Your Phone and How to Fix It

Background Conversations keep a user's conversation with ChatGPT going while using other apps or when the screen is off. This means ChatGPT can listen or monitor a user's phone usage behavior 24/7.

Googles Gemini Responds With Weird, Repeated Nonsense Words to Some Users

Googles Gemini Responds With Weird, Repeated Nonsense Words to Some Users

Recently, some users noticed that Google Gemini has been giving repetitive text, weird characters, and complete nonsense in some responses.

Full code of Luc Tung Tam Quoc latest and instructions to redeem code

Full code of Luc Tung Tam Quoc latest and instructions to redeem code

Code Luc Tung Tam Quoc gives new players everything they need to start their journey.

Code Giang Ho Ngu Tuyet and how to enter code

Code Giang Ho Ngu Tuyet and how to enter code

Giang Ho Ngu Tuyet is an MMORPG game based on the five elements of mutual generation and mutual inhibition. With 5 sects: Shaolin, Minh Giao, Vo Dang, Duong Gia, Thien Nhan based on the five elements of Metal, Wood, Water, Fire, Earth.

MIUI 13 Wallpaper, MIUI 13 Wallpaper

MIUI 13 Wallpaper, MIUI 13 Wallpaper

MIUI 13 wallpapers with many different wallpaper themes from abstract to landscape, combined with vivid and attractive colors for users to choose from.

How to fix Your virus & threat protection is managed by your organization error

How to fix Your virus & threat protection is managed by your organization error

What do you need to do to resolve the error Your virus & threat protection is managed by your organization?

How to fix Chromebook not turning on

How to fix Chromebook not turning on

If your Chromebook won't turn on, you're probably feeling frustrated and hopeless. Luckily, many of the reasons why a Chromebook won't turn on are easy to fix.

Why should you always check app permissions before pressing install?

Why should you always check app permissions before pressing install?

Taking a moment to review your app permissions can save you a lot of privacy and security problems later on!

How to play Rengar DTCL season 14, standard items, lineup...

How to play Rengar DTCL season 14, standard items, lineup...

Rengar DTCL season 14 will play the main assassin role, with the ability to jump to the enemy with the lowest health and deal strong physical damage.

Can autism be detected based on facial features?

Can autism be detected based on facial features?

Using facial features to detect autism is a growing area of ​​research. While it can aid in diagnosis, much of the research remains unreliable.

10 types of diseases caused by technology, only appear in modern people

10 types of diseases caused by technology, only appear in modern people

Technology brings convenience and unlimited connectivity, changing everyone's lives but also bringing diseases that were never seen before.

How to move purchases between 2 Apple accounts

How to move purchases between 2 Apple accounts

If you've purchased apps, subscriptions, music, videos, or other content from one Apple account, you can now transfer purchases to another Apple account when needed.

How to hide personal information of photos on phone

How to hide personal information of photos on phone

Skitch application on Android, iOS will edit images including the feature of blurring out personal and confidential information in the image.