Случаи, которые следует знать при использовании операторов выбора в Golang

Зарегистрируйтесь и зарабатывайте 1000$ в день ⋙

В языке Go оператор select похож на оператор switch , но в операторе select оператор case относится к коммуникации, т. е. операции отправки или получения по каналу.

Случаи, которые следует знать при использовании операторов выбора в Golang

Синтаксис:

select{

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

В этой статье мы узнаем, как использовать регистр по умолчанию, чтобы избежать взаимоблокировки. Но сначала давайте выясним, что такое случай взаимоблокировки при использовании команды select в Golang ?

Что нужно знать о случаях взаимоблокировки в Golang

Взаимная блокировка: когда вы пытаетесь прочитать или записать данные из канала, но канал пуст. Таким образом, он блокирует текущее выполнение горутины и передает управление другим горутинам, но если другие горутины недоступны или другие горутины отдыхают из-за этой ситуации, программа аварийно завершит работу. Это явление называется тупиком. Как показано в примере ниже:

Например:

// 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: }="" }="">

Результат:

fatal error: all goroutines are asleep - deadlock!

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

Чтобы избежать этой ситуации, мы используем регистр по умолчанию в операторе select. Другими словами, когда в программе возникает взаимоблокировка, выполняется вариант оператора select по умолчанию, чтобы избежать взаимоблокировки. Как и в примере ниже, мы используем регистр по умолчанию в операторе select, чтобы избежать взаимоблокировки.

Например:

// 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..!")="" }="" }="">

Результат:

!.. Default case..!

Вы также можете использовать случай по умолчанию, когда оператор select имеет только нулевой канал . Как показано в примере ниже, канал c равен нулю, поэтому выполняется вариант по умолчанию, если вариант по умолчанию здесь недоступен, то программа блокируется навсегда и возникает взаимоблокировка.

Например:

// 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..!")="" }="" }="">

Результат:

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

Leave a Comment

Ключевые слова в Go

Ключевые слова в Go

Ключевое слово. Ключевые слова — это слова в языке, которые используются для обозначения какого-либо внутреннего процесса или представляют собой какое-либо предопределенное действие. Вот что вам нужно знать о ключевых словах в Golang.

Типы данных в Golang

Типы данных в Golang

Тип данных определяет тип данных, которые может содержать допустимая переменная Go. В языке Go типы делятся на четыре категории следующим образом:

Аргументы функций в Golang

Аргументы функций в Golang

Go поддерживает два основных способа передачи аргументов: передача по значению и передача по ссылке. Go по умолчанию использует передачу по значению.

Функция, возвращающая несколько значений в Golang

Функция, возвращающая несколько значений в Golang

В языке Go разрешено возвращать несколько значений из функции с помощью оператора return. Другими словами, в функции оператор return может возвращать несколько значений.

Оператор Switch в Go

Оператор Switch в Go

В Golang, как и в большинстве других языков программирования, есть оператор switch. Вот как использовать оператор switch в Golang.

Анонимные структуры и поля в Golang

Анонимные структуры и поля в Golang

Анонимные структуры в Golang — это временные структуры без имен, используемые для одноразовых целей, в то время как анонимные поля допускают встраивание неименованных полей.

Как использовать Руну в Golang

Как использовать Руну в Golang

Что такое руны в языке Голанг? Как использовать руну в Golang? Статья даст вам ответ.

Как использовать операторы в Golang

Как использовать операторы в Golang

Операторы позволяют нам выполнять различные типы операций над операндами. В языке Go операторы можно классифицировать на основе их различных функций.

Идентификатор Void в Golang

Идентификатор Void в Golang

_(подчеркивание) в Golang называется пустым идентификатором. Идентификатор — определяемое пользователем имя компонентов программы, используемое для целей идентификации.

Как создать базовую программу на Golang

Как создать базовую программу на Golang

Привет, мир! это первая базовая программа на любом языке программирования. Вы можете написать эту первую программу на Golang, следуя инструкциям ниже.

Как установить Go на Windows

Как установить Go на Windows

Golang можно легко установить на Windows. Ниже приведено подробное пошаговое руководство по установке Golang на Windows.

Методы с таким же названием в Golang

Методы с таким же названием в Golang

Golang позволяет создавать два или более методов с одинаковым именем в одном пакете, но получатели этих методов должны быть разных типов.

Функции в Go

Функции в Go

В Go функции представляют собой блоки кода, выполняющие определенные задачи, которые можно повторно использовать в программе для экономии памяти, улучшения читаемости и экономии времени.

Область действия переменных в Go

Область действия переменных в Go

Область действия переменной в Golang определяет часть программы, где эта переменная доступна. В Go все идентификаторы имеют лексическую область действия, которая определяется во время компиляции.

Пространство «Играй вместе», назовите пространство «Играй вместе»

Пространство «Играй вместе», назовите пространство «Играй вместе»

Многие люди используют пробелы в своих именах в Play Together или используют маленькие подчеркивания, чтобы создать пробелы между буквами, которые вы пишете в своем имени.

Как скачать Black Beacon PC

Как скачать Black Beacon PC

Хотя Black Beacon вполне можно опробовать на ПК, на данный момент игра официально не оптимизирована для этой платформы.

Формула для расчета площади поверхности и объема сферы

Формула для расчета площади поверхности и объема сферы

Площадь поверхности сферы в четыре раза больше площади большого круга, которая в четыре раза больше постоянной Пи, умноженной на квадрат радиуса сферы.

Что особенного в скафандре, который Китай выбрал для первой высадки человека на Луну?

Что особенного в скафандре, который Китай выбрал для первой высадки человека на Луну?

Китай намерен отправить своих первых граждан на Луну к 2030 году, и страна только что представила новый скафандр, который будет использоваться в предстоящей исторической миссии.

Продукты, которые легко вызывают воспаление в организме

Продукты, которые легко вызывают воспаление в организме

Многие продукты могут вызывать воспаления и хронические заболевания. Ниже приведены продукты, которых следует избегать, если вы не хотите занести в свой организм болезни.

Инструкции по игре Zuka Lien Quan Mobile, сезон S1 2023

Инструкции по игре Zuka Lien Quan Mobile, сезон S1 2023

Зука — убийца, который, как известно, является ужасом для чемпионов с низким уровнем здоровья. Узнайте, как эффективно использовать Зуку в 23 сезоне.

Последний код Heroic Era и как его использовать

Последний код Heroic Era и как его использовать

Получение подарков с помощью подарочных кодов Heroic Age — это то, что делают почти все новые игроки, присоединяясь к игре.

8 самых дешевых поставщиков облачных хранилищ

8 самых дешевых поставщиков облачных хранилищ

Давайте рассмотрим самые дешевые варианты облачного онлайн-хранилища. В этой статье мы рассмотрим цены как в абсолютных цифрах, так и за гигабайт (в месяц), чтобы вы могли выбрать наиболее подходящий для вас вариант.

Что означает ошибка со знаком решетки (####) в Excel?

Что означает ошибка со знаком решетки (####) в Excel?

#### в Excel — это распространенная ошибка Excel, которая появляется во многих случаях, когда мы вводим данные в Excel, функции в Excel, вводим формулы в Excel.

12 настроек на телефонах Samsung Galaxy, которые следует изменить

12 настроек на телефонах Samsung Galaxy, которые следует изменить

Только что купили телефон Samsung Galaxy и вам нужно его настроить? Вот 10 настроек, которые следует изменить, чтобы улучшить работу телефона Samsung.

Последние коды Murder Mystery 2 и как их ввести

Последние коды Murder Mystery 2 и как их ввести

Code Murder Mystery 2 помогает игрокам выбирать больше обликов ножей для своих персонажей или получать больше денег для оплаты услуг и покупки других вещей в игре.

28 красивых дизайнов поздравительных открыток с добрыми пожеланиями для родителей, супругов, возлюбленных, друзей

28 красивых дизайнов поздравительных открыток с добрыми пожеланиями для родителей, супругов, возлюбленных, друзей

В день рождения любимого человека, родителей, друзей, братьев и сестер, коллег... помимо подарков не забудьте отправить поздравительные открытки с пожеланиями.

Забавные, но милые загадки о флирте, которые «завоюют» сердце вашего возлюбленного

Забавные, но милые загадки о флирте, которые «завоюют» сердце вашего возлюбленного

Эти забавные тесты помогут вам произвести сильное впечатление и быстро и счастливо покорить сердце вашей пассии.

Corki DTCL сезон 7: предметы сборки, стандартный отряд Corki Gunner

Corki DTCL сезон 7: предметы сборки, стандартный отряд Corki Gunner

Корки DTCL 7 сезон нуждается в защите или поддержке, чтобы вызвать контроль, если он хочет быть свободным и уничтожить вражескую команду. В то же время, снаряжение Корки также должно быть стандартным, чтобы иметь возможность наносить более эффективный урон.

Как скачать Mini World Royale и инструкции по игре

Как скачать Mini World Royale и инструкции по игре

Вот ссылка на скачивание Mini World Royale и инструкции по игре, у нас будет две версии: Mini World Royale APK и Mini World Royale iOS.