这篇文章介绍了如何在Go语言中使用协程进行异步请求。文章首先解释了协程是Go语言中的轻量级线程实现,由Go运行时管理。然后,通过一个示例展示了如何使用sync.WaitGroup来同步多个协程。示例中,我们创建了两个协程,每个协程都会调用getData()函数并将结果存储在rel映射中。最后,我们等待所有协程完成,然后打印rel映射的内容。运行结果显示,两个协程都成功地获取了数据并存储在rel映射中。
Demo
package main
import (
"fmt"
"sync"
)
func main() {
var gp sync.WaitGroup
rel := make(map[string]interface{})
gp.Add(2)
go func(g *sync.WaitGroup) {
defer g.Done()
rel["demo1"] = getData()
}(&gp)
go func(g *sync.WaitGroup) {
defer g.Done()
rel["demo2"] = getData()
}(&gp)
gp.Wait()
fmt.Println(rel)
}
func getData() string {
return "test"
}
响应结果
map[demo1:test demo2:test]