面试题答案
一键面试在Go语言中,生成器函数通过向通道发送数据,而其他并发函数从通道接收数据,以此实现数据的传递与处理。
示例代码如下:
package main
import (
"fmt"
)
// 生成器函数,向通道发送数据
func generator(ch chan int) {
for i := 0; i < 5; i++ {
ch <- i
}
close(ch) // 数据发送完毕,关闭通道
}
// 处理函数,从通道接收数据并处理
func processor(ch chan int) {
for num := range ch {
fmt.Println("Processing:", num)
}
}
func main() {
ch := make(chan int)
go generator(ch)
go processor(ch)
// 防止主函数提前退出
select {}
}
在上述代码中:
generator
函数作为生成器,向通道ch
发送数据,并在数据发送完毕后关闭通道。processor
函数从通道ch
接收数据并处理。这里使用for... range
循环来读取通道数据,直到通道关闭。- 在
main
函数中,创建了通道ch
,并分别启动generator
和processor
两个协程。最后使用select {}
防止主函数提前退出。