【Go高阶】细说 Channel 的进阶用法
package main
import (
"fmt"
"time"
)
// 定义一个返回通道的函数,该通道每秒发送数字
func generate(num int) <-chan int {
result := make(chan int)
go func() {
for count := 0; count < num; count++ {
result <- count
time.Sleep(time.Second)
}
close(result)
}()
return result
}
func main() {
// 使用generate函数创建通道,并接收通道数据
for count := range generate(5) {
fmt.Println(count)
}
}
这段代码定义了一个名为generate
的函数,它返回一个通道,该通道每秒发送一个从0开始的数字,直到num-1。在main
函数中,我们调用generate
函数,并通过range
关键字接收并打印发送出来的数字,直到通道关闭。这是一个展示通道用法的简单例子。
评论已关闭