Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Golang中进行2次并发网络请求_Go - Fatal编程技术网

如何在Golang中进行2次并发网络请求

如何在Golang中进行2次并发网络请求,go,Go,我有两个功能可以发出网络请求: e、 g: 考虑到它们是两种不同的类型,我不能只使用一个频道。 并行调用的最佳模式是什么: resultA, err := request1() resultB, err := request2() 使用sync.WorkGroup var wg sync.WorkGroup wg.Add(2) var resultA resultTypeA, errA error go func() { resultA, errA = request1() w

我有两个功能可以发出网络请求:

e、 g:

考虑到它们是两种不同的类型,我不能只使用一个频道。 并行调用的最佳模式是什么:

resultA, err := request1()
resultB, err := request2()

使用
sync.WorkGroup

var wg sync.WorkGroup
wg.Add(2)
var resultA resultTypeA, errA error
go func() {
    resultA, errA = request1()
    wg.Done()
}()
var resultB resultTypeB, errB error
go func() {
    resultB, errB = request2()
    wg.Done()
}()
wg.Wait()

if errA != nil {
    return errA
}
if errB != nil {
    return errB
}

您可以只创建两个goroutine使它们并发。您能提供一个错误处理的示例吗?e、 g.如果其中任何一个返回错误,terminate@samol您可以在
wg.Wait()
之后检查
errA
errB
,并在出现错误时执行所需操作。
var wg sync.WorkGroup
wg.Add(2)
var resultA resultTypeA, errA error
go func() {
    resultA, errA = request1()
    wg.Done()
}()
var resultB resultTypeB, errB error
go func() {
    resultB, errB = request2()
    wg.Done()
}()
wg.Wait()

if errA != nil {
    return errA
}
if errB != nil {
    return errB
}