首頁 > 後端開發 > Golang > 主體

如何在 Golang 中打破外部作用域的無限 For 迴圈?

Susan Sarandon
發布: 2024-10-26 09:37:29
原創
766 人瀏覽過

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

在 Golang 中從外部中斷 For 迴圈

在巢狀函數中使用無限 for 迴圈時,會出現從外部作用域終止迴圈執行的挑戰。當調度函數作為 goroutine 同時執行時,這一點尤其重要。

要解決這個問題,請考慮實現一個信號通道:

<code class="go">quit := make(chan struct{})</code>
登入後複製

此通道將充當一個標誌,指示循環何時應該進行

在goroutine 中,不斷監視一個條件,當滿足時,關閉信號通道:

<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 循環中,引入一個select 語句來監視信號通道:

<code class="go">myLoop:
for {
    select {
    case <-quit:
        break myLoop
    default:
        fmt.Println("iteration", i)
        i++
    }
}</code>
登入後複製

檢測到關閉的訊號通道後,select 語句立即將執行傳遞到預設情況,從而觸發循環終止。

以上是如何在 Golang 中打破外部作用域的無限 For 迴圈?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!