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