Range Over Channels

GolangGolangBeginner
Pratiquer maintenant

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

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Ce laboratoire vise à tester votre capacité à itérer sur les valeurs reçues à partir d'un canal en utilisant la syntaxe for et range en Golang.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/ConcurrencyGroup(["Concurrency"]) go/ConcurrencyGroup -.-> go/channels("Channels") subgraph Lab Skills go/channels -.-> lab-15496{{"Range Over Channels"}} end

Range Over Channels

Vous êtes requis d'écrire une fonction qui prend un canal d'entiers et renvoie la somme de tous les entiers reçus à partir du canal.

  • La fonction doit s'appeler sumInts.
  • La fonction doit prendre un seul paramètre de type chan int.
  • La fonction doit renvoyer une seule valeur entière.
  • Vous n'êtes pas autorisé à utiliser de boucles ou de récursion à l'intérieur du corps de la fonction.
  • Vous n'êtes pas autorisé à utiliser de packages externes.
$ go run range-over-channels.go
one
two

## Cet exemple a également montré qu'il est possible de fermer
## un canal non vide mais de recevoir encore les valeurs restantes.

Voici le code complet ci-dessous :

// Dans un [exemple précédent](range), nous avons vu comment `for` et
// `range` permettent d'itérer sur des structures de données de base.
// Nous pouvons également utiliser cette syntaxe pour itérer sur
// les valeurs reçues à partir d'un canal.

package main

import "fmt"

func main() {

	// Nous allons itérer sur 2 valeurs dans le canal `queue`.
	queue := make(chan string, 2)
	queue <- "one"
	queue <- "two"
	close(queue)

	// Cette `range` itère sur chaque élément au fur et à mesure qu'il est
	// reçu à partir de `queue`. Comme nous avons `fermé` le
	// canal ci-dessus, l'itération se termine après
	// avoir reçu les 2 éléments.
	for elem := range queue {
		fmt.Println(elem)
	}
}

Summary

Dans ce laboratoire, vous deviez écrire une fonction qui additionne tous les entiers reçus à partir d'un canal en utilisant la syntaxe for et range en Golang. En terminant ce laboratoire, vous devriez mieux comprendre comment itérer sur les valeurs reçues à partir d'un canal et comment utiliser des goroutines pour recevoir des valeurs à partir d'un canal.