Введение
Этот лабораторный проект旨在测试您使用Golang中的for
和range
语法遍历从通道接收的值的能力。
This tutorial is from open-source community. Access the source code
💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал
Этот лабораторный проект旨在测试您使用Golang中的for
和range
语法遍历从通道接收的值的能力。
Требуется написать функцию, которая принимает канал целых чисел и возвращает сумму всех целых чисел, полученных из канала.
sumInts
.chan int
.$ go run range-over-channels.go
one
two
## Этот пример также показал, что можно закрыть
## непустой канал, но по-прежнему получать оставшиеся
## значения.
Ниже представлен полный код:
// В [предыдущем](range) примере мы увидели, как `for` и
// `range` обеспечивают итерацию по базовым структурам данных.
// Мы также можем использовать этот синтаксис для итерации по
// значениям, полученным из канала.
package main
import "fmt"
func main() {
// Мы будем итерироваться по 2 значениям в канале `queue`.
queue := make(chan string, 2)
queue <- "one"
queue <- "two"
close(queue)
// Эта `range` итерируется по каждому элементу, по мере его
// получения из `queue`. Поскольку мы закрыли канал выше,
// итерация завершается после получения 2 элементов.
for elem := range queue {
fmt.Println(elem)
}
}
В этом лабораторном проекте вам предстояло написать функцию, которая суммирует все целые числа, полученные из канала, используя синтаксис for
и range
в Golang. Завершив этот лабораторный проект, вы должны лучше понять, как итерироваться по значениям, полученным из канала, и как использовать горутины для приема значений из канала.