선택 문에서 수신 및 전송 작업의 역학 공개
채널 결과를 전달하려고 할 때 많은 사람들이 다음 구성을 선택합니다.
for { select { ... case ch2 <- (<-ch1): ... } }
이 코드를 검토하면 다음과 같은 질문이 제기됩니다. 선택 작업의 어떤 측면이 평가되고 있는지, 수신 또는 전송 작업이 무엇인지?
Go 문서에서 이에 대한 정보를 얻을 수 있습니다.
receive 작업의 채널 피연산자와 send 문의 오른쪽 표현식은 "select" 문을 입력할 때 소스 순서대로 정확히 한 번 평가됩니다.
이는 주어진 예에서 다음을 의미합니다. , <-ch1 표현식이 즉시 평가되고 select 문은 ch2로의 전송이 실행될지 아니면 대체 사례가 실행될지 결정하기 위해 진행됩니다.
효과적으로 이 방법을 사용하면 ch1의 수신을 즉시 차단할 수 있습니다. 선택은 궁극적으로 ch2의 후속 전송을 제어합니다. 그러나 대체 사례를 선택하더라도 ch1의 값은 여전히 소비되고 폐기된다는 점에 주목할 가치가 있습니다.
위 내용은 Go `select` 문에서 수신 또는 전송이 먼저 평가됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!