Logo
开发文档
QQ频道

c := make(chan int) go func() { for i := 0; i < 10; i++ { c <- i fmt.Println("go", i) } }() for n := 0; n < 9; n++ { fmt.Println("main", <-c) }

2025-01-31 21:48:00
|
浏览 174

package main

import “fmt”

func main() {
// 创建一个整型类型的无缓冲通道
c := make(chan int)

// 启动一个 goroutine 来往通道发送数据
go func() {
	for i := 0; i < 10; i++ {
		c <- i
		fmt.Println("go", i)
	}
}()

// 主 goroutine 从通道接收数据并打印
for n := 0; n < 10; n++ {
	fmt.Println("main", <-c)
}

}

在这段程序中,首先我们创建了一个整型类型的无缓冲通道,然后在一个单独的 goroutine 中向通道发送数据并输出"go"和该数据的值。接着主 goroutine 从通道接收数据并输出"main"和该数据的值。由于通道是无缓冲的,发送操作和接收操作会在不同的 goroutine 之间同步,确保数据在接收方准备好之前发送方会被阻塞。通过这种方式实现了 goroutine 之间的协作和数据传递。

我要提问
复制内容
分享给好友
AI编程问答网 免责声明:
以上内容除特别注明外均来源于网友提问,AI编程问答网回答,权益归原著者所有;