简介
本实验旨在测试你使用 Go 语言中的 for 和 range 语法对从通道接收的值进行迭代的能力。
本实验旨在测试你使用 Go 语言中的 for 和 range 语法对从通道接收的值进行迭代的能力。
你需要编写一个函数,该函数接收一个整数通道,并返回从该通道接收到的所有整数的总和。
sumInts。chan int 类型的单个参数。$ go run range-over-channels.go
一
二
## 此示例还表明,可以关闭一个非空通道,但仍能接收剩余的值。
以下是完整代码:
// 在 [之前](range) 的示例中,我们看到了 `for` 和
// `range` 如何对基本数据结构进行迭代。
// 我们也可以使用此语法来迭代从通道接收的值。
package main
import "fmt"
func main() {
// 我们将遍历 `queue` 通道中的 2 个值。
queue := make(chan string, 2)
queue <- "一"
queue <- "二"
close(queue)
// 这个 `range` 会在从 `queue` 接收到每个元素时对其进行迭代。由于我们在上面关闭了通道,所以在接收到 2 个元素后迭代就会终止。
for elem := range queue {
fmt.Println(elem)
}
}
在本实验中,你需要编写一个函数,使用 Go 语言中的 for 和 range 语法对从通道接收的所有整数求和。通过完成本实验,你应该能更好地理解如何对从通道接收的值进行迭代,以及如何使用 goroutine 从通道接收值。