Casos a conocer al utilizar sentencias de selección en Golang

En el lenguaje Go, la declaración select es como la declaración switch , pero en la declaración select, la declaración case se refiere a la comunicación, es decir, la operación de envío o recepción en el canal.

Casos a conocer al utilizar sentencias de selección en Golang

Sintaxis:

select{

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

En este artículo, aprenderemos cómo utilizar el caso predeterminado para evitar el bloqueo. Pero primero, descubramos qué es el caso de bloqueo cuando se usa el comando de selección de Golang .

Cosas que debe saber sobre el caso de estancamiento en Golang

Bloqueo: cuando intenta leer o escribir datos de un canal pero el canal está vacío. Por lo tanto, bloquea la ejecución actual de la goroutine y pasa el control a otras goroutines, pero si no hay otra goroutine disponible o si otras goroutines están en reposo debido a esta situación, el programa se bloqueará. Este fenómeno se llama punto muerto. Como se muestra en el siguiente ejemplo:

Por ejemplo:

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

Resultado:

fatal error: all goroutines are asleep - deadlock!

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

Para evitar esta situación, utilizamos el caso predeterminado en la declaración select. En otras palabras, cuando se produce un bloqueo en el programa, se ejecuta el caso predeterminado de la instrucción select para evitar el bloqueo. Como en el ejemplo a continuación, utilizamos el caso predeterminado en la declaración select para evitar el bloqueo.

Por ejemplo:

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

Resultado:

!.. Default case..!

También se le permite utilizar el caso predeterminado cuando la declaración de selección solo tiene un canal nulo . Como se muestra en el ejemplo a continuación, el canal c es nulo, por lo que se ejecuta el caso predeterminado; si el caso predeterminado aquí no está disponible, el programa se bloqueará para siempre y se producirá un bloqueo.

Por ejemplo:

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

Resultado:

Default case..!

Dejar un comentario

Cómo tirar tubos fluorescentes en L’Hospitalet de Llobregat: dónde llevarlos y qué hacer en 2026

Cómo tirar tubos fluorescentes en L’Hospitalet de Llobregat: dónde llevarlos y qué hacer en 2026

Guía 2026 para desechar tubos fluorescentes en L’Hospitalet: punto limpio, límites para particulares, entrega en tiendas y transporte seguro.

Cómo tirar aceite de cocina usado en Barcelona: guía práctica

Cómo tirar aceite de cocina usado en Barcelona: guía práctica

Aprende cómo guardar y llevar aceite de cocina usado a un Punto Verde de Barcelona, qué errores evitar y cómo comprobar el resultado.

Cómo tirar un ordenador en Madrid: opciones seguras para reciclarlo

Cómo tirar un ordenador en Madrid: opciones seguras para reciclarlo

Guía práctica para desechar un ordenador en Madrid: borrado de datos, puntos limpios fijos, entrega en tiendas y límites de los puntos móviles.

Dónde tirar un teléfono móvil: opciones, datos y errores que conviene evitar

Dónde tirar un teléfono móvil: opciones, datos y errores que conviene evitar

Descubre dónde tirar un teléfono móvil en España, cómo borrar tus datos, retirar SIM y microSD y elegir entre punto limpio, tienda o gestor autorizado.

Empadronamiento en A Coruña: requisitos y documentos para darse de alta

Empadronamiento en A Coruña: requisitos y documentos para darse de alta

Consulta qué documentos necesitas para empadronarte en A Coruña: identificación, prueba de vivienda, autorizaciones y requisitos para menores.

Cómo tirar un televisor en Pamplona: recogida, entrega y qué no hacer

Cómo tirar un televisor en Pamplona: recogida, entrega y qué no hacer

Guía práctica para deshacerse de un televisor en Pamplona: recogida de voluminosos, devolución al comprar otro, preparación y errores que evitar.

Cómo tirar un edredón en Córdoba: opciones correctas según su estado

Cómo tirar un edredón en Córdoba: opciones correctas según su estado

Descubre cómo deshacerte de un edredón en Córdoba: reutilización, contenedores textiles, ecoparques y recogida de SADECO.

Cómo tirar un edredón en Sevilla: contenedor textil, punto limpio y alternativas

Cómo tirar un edredón en Sevilla: contenedor textil, punto limpio y alternativas

En Sevilla, un edredón usado va al circuito textil si está seco y cabe en el contenedor. Si es voluminoso, consulta un punto limpio de LIPASAM antes de llevarlo.

Cómo tirar un microondas en Jerez de la Frontera: opciones y pasos seguros

Cómo tirar un microondas en Jerez de la Frontera: opciones y pasos seguros

Descubre cómo tirar un microondas en Jerez de la Frontera: Punto Limpio Sur, Punto Limpio Móvil 2026, preparación, transporte y señales de una entrega correcta.

Cómo tirar un aerosol en Cartagena: contenedor amarillo, punto limpio y casos especiales

Cómo tirar un aerosol en Cartagena: contenedor amarillo, punto limpio y casos especiales

Guía actualizada para desechar aerosoles en Cartagena: cuándo usar el contenedor amarillo, cuándo llevarlos al punto limpio y qué hacer con envases de medicamentos.