在Golang中,我們通常使用goroutine和channel來實現(xiàn)并發(fā)編程。當你想要在一個goroutine中執(zhí)行一個任務(wù),并在任務(wù)完成后返回結(jié)果給調(diào)用者時,你可以使用channel來實現(xiàn)。下面是一個簡單的示例:
package main
import (
"fmt"
"time"
)
func worker(done chan<- int) {
// 模擬一個耗時任務(wù)
time.Sleep(2 * time.Second)
result := 42
done <- result
}
func main() {
done := make(chan int)
go worker(done)
result := <-done
fmt.Println("任務(wù)完成,結(jié)果是:", result)
}
在這個示例中,我們定義了一個名為worker
的函數(shù),它接受一個只寫整數(shù)類型的channel done
作為參數(shù)。在worker
函數(shù)中,我們模擬了一個耗時任務(wù),然后完成任務(wù)后將結(jié)果發(fā)送到done
channel。
在main
函數(shù)中,我們創(chuàng)建了一個名為done
的channel,然后啟動一個新的goroutine來執(zhí)行worker
函數(shù)。接著,我們從done
channel接收結(jié)果,并將其打印出來。
這種方式可以讓你在一個goroutine中執(zhí)行任務(wù),并在任務(wù)完成后將結(jié)果返回給調(diào)用者。