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 중국어 웹사이트의 기타 관련 기사를 참조하세요!