>백엔드 개발 >Golang >Golang의 외부 범위에서 무한 For 루프를 끊는 방법은 무엇입니까?

Golang의 외부 범위에서 무한 For 루프를 끊는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-26 09:37:29886검색

How to Break an Infinite For Loop from an External Scope in Golang?

Golang의 외부에서 For 루프 끊기

중첩 함수 내에서 무한 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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