在Go語(yǔ)言中,可以通過(guò)關(guān)鍵字go
來(lái)創(chuàng)建一個(gè)goroutine,goroutine是一種輕量級(jí)的線程,可以并發(fā)執(zhí)行任務(wù)。創(chuàng)建goroutine的語(yǔ)法如下:
go func_name()
其中func_name()
是一個(gè)函數(shù)的調(diào)用,該函數(shù)會(huì)在一個(gè)新的goroutine中執(zhí)行。
除此之外,還可以使用匿名函數(shù)來(lái)創(chuàng)建goroutine:
go func() {
// 執(zhí)行任務(wù)
}()
在使用goroutine時(shí),可以利用通道(channel)來(lái)實(shí)現(xiàn)goroutine之間的通信。可以使用make
函數(shù)創(chuàng)建一個(gè)通道,然后使用<-
來(lái)進(jìn)行發(fā)送和接收數(shù)據(jù)。例如:
ch := make(chan int)
go func() {
ch <- 42 // 發(fā)送數(shù)據(jù)到通道
}()
result := <-ch // 從通道中接收數(shù)據(jù)
fmt.Println(result)
注意,在使用goroutine時(shí),需要注意避免數(shù)據(jù)競(jìng)態(tài)問(wèn)題,可以使用sync
包中的互斥鎖(Mutex)來(lái)保護(hù)共享數(shù)據(jù)的訪問(wèn)。