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

В языке 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..!

Оставить комментарий

Как исправить ошибку в Microsoft Teams: пошаговое руководство по работе с Teams

Как исправить ошибку в Microsoft Teams: пошаговое руководство по работе с Teams

Возникли проблемы с ошибкой в ​​руководстве по использованию Microsoft Teams? Узнайте о проверенных пошаговых способах её быстрого устранения. Очистка кэша, обновление и многое другое для беспроблемного начала работы. Работает на последних версиях!

Как исправить ошибки воспроизведения мультимедиа в Microsoft Teams в 2026 году

Как исправить ошибки воспроизведения мультимедиа в Microsoft Teams в 2026 году

Устали от ошибок воспроизведения мультимедиа в Microsoft Teams, которые портят ваши встречи в 2026 году? Следуйте нашему пошаговому руководству от экспертов, чтобы быстро устранить неполадки со звуком, видео и обменом файлами — никаких технических навыков не требуется. Вас ждет бесперебойное сотрудничество!

Устранение неполадок с настройками прокси-сервера Microsoft Teams.

Устранение неполадок с настройками прокси-сервера Microsoft Teams.

Возникли проблемы с ошибкой прокси-сервера Microsoft Teams? Ознакомьтесь с проверенными шагами по устранению неполадок с настройками прокси-сервера Microsoft Teams. Очистите кэш, настройте параметры прокси-сервера и вернитесь к бесперебойным звонкам за считанные минуты с помощью нашего руководства от экспертов.

Как исправить ошибки синхронизации в Microsoft Teams Task Management

Как исправить ошибки синхронизации в Microsoft Teams Task Management

Устали от ошибок синхронизации задач в Microsoft Teams, которые мешают вашей работе? Следуйте нашим пошаговым инструкциям, чтобы восстановить бесперебойную синхронизацию задач между Teams, Planner и To Do. Быстрые решения для мгновенного облегчения!

Где находятся ключи реестра Microsoft Teams в Windows 11?

Где находятся ключи реестра Microsoft Teams в Windows 11?

Найдите точное расположение ключей реестра Microsoft Teams в Windows 11. Пошаговое руководство по поиску, доступу и безопасному изменению этих ключей для оптимальной производительности и устранения неполадок. Незаменимо для ИТ-специалистов и энтузиастов Teams.

Как очистить кэш Microsoft Teams для устранения проблем с производительностью

Как очистить кэш Microsoft Teams для устранения проблем с производительностью

Проблемы с медленной работой Microsoft Teams? Узнайте, как пошагово очистить кэш Microsoft Teams, чтобы устранить проблемы с производительностью, задержки, сбои и повысить скорость работы на Windows, Mac, в веб-версии и на мобильных устройствах. Быстрые и эффективные решения!

Как исправить ошибку Вкладка Wiki в Microsoft Teams не загружается

Как исправить ошибку Вкладка Wiki в Microsoft Teams не загружается

Возникла проблема с загрузкой вкладки Wiki в Microsoft Teams? Узнайте о проверенных пошаговых решениях, которые помогут быстро устранить проблему, восстановить вкладки Wiki и без лишних хлопот повысить производительность команды.

Где находится Microsoft Teams в Outlook? Как найти отсутствующий значок.

Где находится Microsoft Teams в Outlook? Как найти отсутствующий значок.

Раздражает отсутствие значка Microsoft Teams в Outlook? Узнайте, где именно его найти, почему он исчезает, и проверенные шаги по его восстановлению для беспроблемных встреч. Обновлено для последних версий!

Почему я не вижу комнаты для обсуждений в своей встрече Teams?

Почему я не вижу комнаты для обсуждений в своей встрече Teams?

Разочарованы отсутствием комнат для обсуждений в вашей встрече Teams? Узнайте о главных причинах, по которым вы не видите комнаты для обсуждений в Teams, и следуйте нашим пошаговым инструкциям, чтобы они заработали за считанные минуты. Идеально подходит как для организаторов, так и для участников!

Как исправить ошибку 1200 в Microsoft Teams на телефоне (iOS/Android)

Как исправить ошибку 1200 в Microsoft Teams на телефоне (iOS/Android)

Устали от ошибки Microsoft Teams 1200, которая прерывает ваши телефонные звонки? Узнайте о быстрых пошаговых решениях для iOS и Android, чтобы быстро восстановить бесперебойную командную работу — никаких технических навыков не требуется!