>백엔드 개발 >Golang >golang에서 채널이 닫혔는지 확인하는 방법

golang에서 채널이 닫혔는지 확인하는 방법

尚
원래의
2020-01-13 09:31:459345검색

golang에서 채널이 닫혔는지 확인하는 방법

Map은 키-값 쌍의 순서가 지정되지 않은 모음입니다. Map의 가장 중요한 점은 인덱스와 유사하며 데이터의 값을 가리키는 키를 통해 데이터를 빠르게 검색하는 것입니다.

Map은 컬렉션이므로 배열 및 슬라이스처럼 반복할 수 있습니다. 그러나 Map은 순서가 없으며 반환되는 순서를 결정할 수 없습니다. 이는 Map이 해시 테이블을 사용하여 구현되기 때문입니다.

golang에서 채널 폐쇄 여부를 판단하는 방법을 살펴보겠습니다:

채널을 읽을 때 폐쇄 여부를 판단하세요

_,ok := <- jobs

If 이때 채널이 닫혀 있습니다. ok 값은 false입니다

채널에 쓸 때 닫혔는지 확인하세요

1._,ok := <- jobs

채널이 닫혀 있는 경우 이때 닫혀 있으면 ok 값은 false입니다. 채널이 닫히지 않으면 하나의 작업이 누락됩니다

2. 선택 방법

을 사용하여 타임아웃이라는 다른 채널을 생성하면 true를 보냅니다. 생산자가 작업 채널에 데이터를 보낼 때 선택을 사용하여 시간 초과가 발생하면 작업 채널이 닫힙니다.

go func() {
 time.Sleep(time.Second * 3)
 timeout <- true
 }()
go func() {
 for i := 0; ; i++ {
 select {
     case <-timeout:
         close(jobs)
         return
 
     default:
         jobs <- i
         fmt.Println("produce:", i)
         }
     }
 }()

더 많은 golang 지식을 보려면 PHP 중국어에 주목하세요. 웹사이트골랑 튜토리얼 칼럼.

위 내용은 golang에서 채널이 닫혔는지 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.