溫馨提示×

Go語言goroutine之間怎么通信

小億
98
2024-04-12 20:11:12
欄目: 編程語言

在Go語言中,可以使用通道(channel)來實現(xiàn)goroutine之間的通信。通道是一種并發(fā)安全的數(shù)據(jù)結(jié)構(gòu),可以在goroutine之間傳遞數(shù)據(jù)。通道可以通過make()函數(shù)創(chuàng)建,然后使用<-符號來發(fā)送或接收數(shù)據(jù)。

下面是一個簡單的例子,展示了如何使用通道在兩個goroutine之間傳遞數(shù)據(jù):

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執(zhí)行完成
	fmt.Scanln()
}

在上面的例子中,sender函數(shù)向通道ch發(fā)送數(shù)據(jù),receiver函數(shù)從通道ch接收數(shù)據(jù)。最后,在main函數(shù)中創(chuàng)建了一個通道ch,并分別啟動了sender和receiver兩個goroutine進行通信。最后,通過fmt.Scanln()等待用戶輸入,以防程序提前結(jié)束。

通過通道,在不同的goroutine之間可以安全地傳遞數(shù)據(jù),實現(xiàn)了goroutine之間的通信。

0