替代在选择情况下等待多个通道的golang

问题描述 投票:-2回答:1

是否有等待两个通道结束的模式选择? (为了满足单个选择条件)

例如:

package main

import (
    "fmt"
)
func main() {
    aChan, bChan := make(chan type), make(chan type)

    go myFunc(aChan, bChan, errChan /*...*/)

    select {
    case a, b := <-aChan, <-bChan: // This doesn't work
        fmt.Printf("%v, %v\n", a, b)
    case err := <- errChan:
        panic(err)
    }

}

我要解决的问题是在goroutine中运行一堆数据库查询,并监听它们的结果通道以完成操作,然后加载带有错误或结果的服务器响应结构。

go concurrency parallel-processing goroutine
1个回答
0
投票
    select {
    case a := <- aChan:
        fmt.Printf("a: %v\n", a)
    case b := <- bChan:
        fmt.Printf("b: %v\n", b)
    case err := <- errChan:
        panic(err)
    }
© www.soinside.com 2019 - 2024. All rights reserved.