Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann man eine Go-For-Schleife extern anhalten?

Wie kann man eine Go-For-Schleife extern anhalten?

Barbara Streisand
Barbara StreisandOriginal
2024-10-26 09:52:29676Durchsuche

How Can You Halt a Go For Loop Externally?

Externes Anhalten der Ausführung einer For-Schleife in Go

In Go kann es vorkommen, dass Sie die Ausführung einer For-Schleife beenden müssen von außerhalb seines Geltungsbereichs. Beispielsweise kann es sein, dass Sie eine lange Schleife haben, die unterbrochen werden muss, wenn eine bestimmte Bedingung erfüllt ist.

Um dies zu erreichen, können Sie einen Signalkanal nutzen. So funktioniert es:

Erstellen eines Signalisierungskanals

<code class="go">quit := make(chan struct{}{})</code>

Diese Zeile erstellt einen Kanal mit einer leeren Struktur als Werttyp. Es wird verwendet, um der Schleife das Anhalten zu signalisieren.

Schließen des Kanals

Innerhalb der Goroutine, die die Schleife ausführt, können Sie die Schließfunktion verwenden, um die zu schließen Signalisierungskanal, wenn die gewünschte Bedingung erfüllt ist:

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

Lesen vom geschlossenen Kanal

Wenn der Quit-Kanal geschlossen ist, kehrt der Messwert von ihm sofort mit einer Null zurück Wert. Dieses Verhalten wird in der äußeren Schleife ausgenutzt. Standardmäßig ist das Lesen aus einem geschlossenen Kanal auf unbestimmte Zeit blockiert. Dies kann jedoch mit einer Select-Anweisung umgangen werden:

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

In dieser Select-Anweisung setzt der Standardfall die Schleifeniteration wie erwartet fort. Wenn der Quit-Kanal geschlossen wird, ist der erste Fall erfüllt, wodurch die Schleife sofort unterbrochen wird.

Durch die Verwendung eines Signalkanals können Sie die Ausführung einer for-Schleife von einer externen Funktion oder Goroutine bei Bedarf effektiv stoppen , was eine größere Flexibilität und Kontrolle über Ihre Codeausführung gewährleistet.

Das obige ist der detaillierte Inhalt vonWie kann man eine Go-For-Schleife extern anhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn