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

如何從外部停止 Go For 迴圈?

Barbara Streisand
發布: 2024-10-26 09:52:29
原創
675 人瀏覽過

How Can You Halt a Go For Loop Externally?

Go 中從外部停止For 迴圈的執行

在Go 中,你可能會遇到需要終止for 迴圈執行的場景來自其範圍之外。例如,您可能有一個長時間運行的循環,需要在滿足特定條件時中斷。

要實現此目的,您可以利用訊號通道。它的工作原理如下:

建立訊號通道

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

此行建立一個以空結構體作為其值類型的通道。它將用於指示循環停止。

關閉Channel

在運行循環的Goroutine 中,您可以使用close 函數來關閉Channel當滿足所需條件時發送信號通道:

<code class="go">if count > 5 {
  close(quit)
  wg.Done()
  return
}</code>
登入後複製

從關閉的通道讀取

當退出通道關閉時,從中讀取立即返回零價值。此行為在外循環中被利用。預設情況下,從關閉的通道讀取資料會無限期阻塞。但是,可以使用 select 語句來避免這種情況:

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

在此 select 語句中,預設情況會如預期地繼續循環迭代。當退出通道關閉時,滿足第一種情況,導致循環立即中斷。

透過使用訊號通道,您可以在必要時有效地停止外部函數或 goroutine 的 for 迴圈的執行,確保更大的靈活性和對程式碼執行的控制。

以上是如何從外部停止 Go For 迴圈?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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