Iteration über Kanäle

GolangGolangBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Dieses Labor zielt darauf ab, Ihre Fähigkeit zu testen, über die von einem Kanal empfangenen Werte mithilfe der for- und range-Syntax in Golang zu iterieren.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/ConcurrencyGroup(["Concurrency"]) go/ConcurrencyGroup -.-> go/channels("Channels") subgraph Lab Skills go/channels -.-> lab-15496{{"Iteration über Kanäle"}} end

Iteration über Kanäle

Sie müssen eine Funktion schreiben, die einen Kanal von ganzen Zahlen entgegennimmt und die Summe aller empfangenen ganzen Zahlen zurückgibt.

  • Die Funktion sollte sumInts heißen.
  • Die Funktion sollte einen einzelnen Parameter vom Typ chan int entgegennehmen.
  • Die Funktion sollte einen einzelnen ganzzahligen Wert zurückgeben.
  • Innerhalb des Funktionskörpers sind Sie nicht gestattet, Schleifen oder Rekursionen zu verwenden.
  • Sie sind nicht gestattet, externe Pakete zu verwenden.
$ go run range-over-channels.go
one
two

## Dieses Beispiel zeigte auch, dass es möglich ist,
## einen nicht leeren Kanal zu schließen, aber die
## verbleibenden Werte weiterhin zu empfangen.

Hier ist der vollständige Code:

// In einem [vorherigen](range) Beispiel haben wir gesehen, wie `for` und
// `range` die Iteration über grundlegende Datenstrukturen ermöglichen.
// Wir können auch diese Syntax verwenden, um über
// von einem Kanal empfangene Werte zu iterieren.

package main

import "fmt"

func main() {

	// Wir werden über 2 Werte im `queue`-Kanal iterieren.
	queue := make(chan string, 2)
	queue <- "one"
	queue <- "two"
	close(queue)

	// Diese `range`-Iteration geht über jedes Element, das
	// aus `queue` empfangen wird. Da wir oben den
	// Kanal geschlossen haben, endet die Iteration nach
	// dem Empfang der 2 Elemente.
	for elem := range queue {
		fmt.Println(elem)
	}
}

Zusammenfassung

In diesem Labor hatten Sie die Aufgabe, eine Funktion zu schreiben, die alle von einem Kanal empfangenen ganzen Zahlen mithilfe der for- und range-Syntax in Golang aufsummiert. Durch die Fertigstellung dieses Labors sollten Sie ein besseres Verständnis dafür haben, wie man über von einem Kanal empfangene Werte iteriert und wie man Goroutinen verwendet, um Werte von einem Kanal zu empfangen.