面试题答案
一键面试package main
import (
"fmt"
"time"
)
func producer(ch chan int) {
for i := 0; ; i++ {
ch <- i
time.Sleep(time.Second)
}
}
func consumer(ch chan int) {
for num := range ch {
fmt.Println("Received:", num)
}
}
func main() {
ch := make(chan int)
go producer(ch)
go consumer(ch)
select {}
}
上述代码解释:
- producer函数:每秒向通道
ch
发送一个递增的数字。 - consumer函数:从通道
ch
接收数字并打印。 - main函数:创建通道
ch
,启动生产者和消费者的Goroutine。最后使用select {}
使主Goroutine不退出。