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