Golang에서 선택문을 사용할 때 알아야 할 사례

Go 언어에서 select 문은 switch 문과 유사 하지만, select 문에서는 case 문이 통신, 즉 채널에서 전송 또는 수신 작업을 참조합니다.

Golang에서 선택문을 사용할 때 알아야 할 사례

통사론:

select{

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

이 글에서는 기본 케이스를 사용하여 교착 상태를 피하는 방법을 알아보겠습니다. 하지만 먼저, Golang select 명령을 사용할 때 교착 상태가 발생하는 경우를 알아보겠습니다 .

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 문에서 default 케이스를 사용합니다.

예를 들어:

// 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 문에 nil 채널 만 있는 경우에도 기본 케이스를 사용할 수 있습니다 . 아래 예에서 보듯이 채널 c는 nil이므로, 여기의 기본 케이스를 사용할 수 없으면 기본 케이스가 실행되고, 그러면 프로그램은 영원히 차단되고 교착 상태가 발생합니다.

예를 들어:

// 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 버전 확인 PowerShell 오류 문제 해결

Microsoft Teams 버전 확인 PowerShell 오류 문제 해결

Microsoft Teams 버전 확인 PowerShell 오류로 인해 불편함을 겪고 계신가요? 검증된 해결 방법을 통해 신속하게 문제를 해결하고, 모듈을 업데이트하고, 원활한 Teams 관리를 복원하세요. 더 이상 다운타임 걱정은 없습니다!

크롬북에서 Microsoft Teams 로그인 오류를 해결하는 방법

크롬북에서 Microsoft Teams 로그인 오류를 해결하는 방법

Chromebook에서 Microsoft Teams 로그인 오류가 발생하나요? 로그인 문제를 빠르게 해결하는 단계별 해결 방법을 알아보세요. 캐시 삭제, 앱 업데이트 등을 통해 원활한 팀워크를 경험해 보세요. 최신 Chrome OS에서 작동합니다!

2026년 Microsoft Teams 미디어 재생 오류 해결 방법

2026년 Microsoft Teams 미디어 재생 오류 해결 방법

Microsoft Teams 미디어 재생 오류 때문에 2026년 회의가 망쳐지고 있나요? 전문가가 제공하는 단계별 가이드를 따라 오디오, 비디오 및 공유 오류를 빠르게 해결해 보세요. 기술적인 지식은 필요하지 않습니다. 이제 원활한 협업을 경험해 보세요!

팀즈 회의에서 소그룹 회의실이 보이지 않는 이유는 무엇인가요?

팀즈 회의에서 소그룹 회의실이 보이지 않는 이유는 무엇인가요?

팀즈 회의에서 소그룹 회의실이 보이지 않아 답답하신가요? 팀즈에서 소그룹 회의실이 보이지 않는 주요 원인을 알아보고, 단계별 해결 방법을 따라 몇 분 안에 원활하게 작동하도록 하세요. 주최자와 참가자 모두에게 유용한 정보입니다!

내 팀 캘린더는 어디에 있나요? 동기화 문제 해결 방법

내 팀 캘린더는 어디에 있나요? 동기화 문제 해결 방법

"내 Teams 캘린더는 어디에 있나요?"라는 질문 때문에 답답하신가요? Microsoft Teams 동기화 문제를 단계별로 해결해 보세요. 캘린더 보기를 복원하고 간편하게 동기화하세요. 전문가 팁도 확인해 보세요!

Microsoft Teams ID 및 계정 정보는 어디에서 찾을 수 있나요?

Microsoft Teams ID 및 계정 정보는 어디에서 찾을 수 있나요?

Microsoft Teams ID 또는 계정 정보를 찾는 데 어려움을 겪고 계신가요? 이 단계별 가이드는 데스크톱, 웹, 모바일 등에서 Microsoft Teams ID와 계정 정보를 찾는 정확한 위치를 안내하여 원활한 공동 작업을 지원합니다.

Microsoft Teams 휴지통은 어디에 있나요? 삭제된 파일을 복구하는 방법

Microsoft Teams 휴지통은 어디에 있나요? 삭제된 파일을 복구하는 방법

Microsoft Teams에서 중요한 파일을 잃어버리셨나요? Microsoft Teams 휴지통의 정확한 위치를 확인하고, 저희가 알려드리는 검증된 단계를 따라하면 기술적인 지식 없이도 삭제된 파일을 빠르고 쉽게 복구할 수 있습니다!

Microsoft Teams 오류 해결 방법: 먼저 확인해야 할 사항

Microsoft Teams 오류 해결 방법: 먼저 확인해야 할 사항

오늘 Microsoft Teams 오류가 발생했나요? 이 단계별 Microsoft Teams 문제 해결 가이드를 통해 오류를 빠르게 해결하기 위한 첫 번째 점검 사항을 확인하세요. 연결, 캐시 및 업데이트 문제를 신속하게 해결하여 다시 원활한 채팅을 시작하세요.

Microsoft Teams 회의 참가 오류 해결 (직접 링크 사용)

Microsoft Teams 회의 참가 오류 해결 (직접 링크 사용)

Microsoft Teams 회의 참가 오류로 어려움을 겪고 계신가요? 바로가기 링크를 통해 검증된 해결 방법을 확인해 보세요. 기술적인 지식이 없어도 원활하게 회의에 참가할 수 있는 빠른 해결법입니다!

Wi-Fi 환경에서 Microsoft Teams 화상 회의 지연 현상 해결

Wi-Fi 환경에서 Microsoft Teams 화상 회의 지연 현상 해결

Wi-Fi 환경에서 Microsoft Teams 화상 회의 시 렉 현상이 발생하시나요? 이 완벽 문제 해결 가이드는 신속한 해결 방법, 고급 팁, Wi-Fi 최적화 방법을 제공하여 선명한 화상 통화를 즉시 복원할 수 있도록 도와줍니다.