阅读量:0
在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中执行任务,并在任务完成后将结果返回给调用者。