중첩 함수 내에서 무한 for 루프를 활용하는 경우 외부 범위에서 루프 실행을 종료해야 하는 문제가 발생합니다. 이는 예약된 함수가 고루틴으로 동시에 실행될 때 특히 관련이 있습니다.
이 문제를 해결하려면 신호 채널 구현을 고려하세요.
<code class="go">quit := make(chan struct{})</code>
이 채널은 루프가 언제 실행되어야 하는지를 나타내는 플래그 역할을 합니다. break.
고루틴 내에서 충족되면 신호 채널을 닫는 조건을 부지런히 모니터링합니다.
<code class="go">go func () { for { fmt.Println("I will print every second", count) count++ if count > 5 { close(quit) wg.Done() return } <-t.C } }()</code>
동시에 무한 for 루프 내에서 신호 채널:
<code class="go">myLoop: for { select { case <-quit: break myLoop default: fmt.Println("iteration", i) i++ } }</code>
닫힌 신호 채널을 감지하면 select 문은 즉시 실행을 기본 케이스로 전달하여 루프 종료를 트리거합니다.
위 내용은 Golang의 외부 범위에서 무한 For 루프를 끊는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!