gochannel例子
时间: 2023-07-25 08:28:57 浏览: 90
go语言学习例子
下面是一个使用Go语言中channel的例子,用于实现两个协程之间的通信:
```go
package main
import (
"fmt"
)
func producer(c chan int) {
for i := 0; i < 10; i++ {
c <- i
}
close(c)
}
func consumer(c chan int) {
for {
v, ok := <-c
if !ok {
break
}
fmt.Println(v)
}
}
func main() {
c := make(chan int)
go producer(c)
go consumer(c)
fmt.Scanln()
}
```
在上面的代码中,我们定义了一个生产者协程和一个消费者协程,它们之间通过一个channel进行通信。生产者协程不断地向channel中发送整数,直到发送完毕后关闭channel。消费者协程不断地从channel中接收整数,直到channel被关闭。
在主函数中,我们创建一个channel对象,然后启动生产者协程和消费者协程,并使用fmt.Scanln()函数等待程序执行。当生产者协程和消费者协程执行完毕后,程序退出。
通过这个例子,我们可以看到channel的使用方法,以及如何在协程之间进行通信。需要注意的是,channel是一种goroutine之间的同步机制,可以保证数据的安全性和正确性。
阅读全文