Go语言goroutine之间怎么通信

1088
2024/4/4 20:11:12
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在Go语言中,可以使用通道(channel)来实现goroutine之间的通信。通道是一种并发安全的数据结构,可以在goroutine之间传递数据。通道可以通过make()函数创建,然后使用<-符号来发送或接收数据。

下面是一个简单的例子,展示了如何使用通道在两个goroutine之间传递数据:

package main

import (
	"fmt"
)

func sender(ch chan string) {
	ch <- "Hello, from sender!"
}

func receiver(ch chan string) {
	msg := <-ch
	fmt.Println("Message received:", msg)
}

func main() {
	ch := make(chan string)

	go sender(ch)
	go receiver(ch)

	// 等待goroutine执行完成
	fmt.Scanln()
}

在上面的例子中,sender函数向通道ch发送数据,receiver函数从通道ch接收数据。最后,在main函数中创建了一个通道ch,并分别启动了sender和receiver两个goroutine进行通信。最后,通过fmt.Scanln()等待用户输入,以防程序提前结束。

通过通道,在不同的goroutine之间可以安全地传递数据,实现了goroutine之间的通信。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: 在Go语言中如何解决并发网络请求的请求流量控制和限流问题