Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

package main

import (
    "fmt"
)

func main() {
    resultChan := make(chan int)
    for i := 1; i <= 10; i++ {
        go func(resultChan chan int) {
            //收集结果,比如接口调用的返回的结构,存入channal中
            resultChan <- 1
        }(resultChan)
    }

    //存放resultChan中的值
    var res []int

    /*
    for {
        select {
        case tmp := <-resultChan:
            res = append(res, tmp)
        }
    }
    */
    
    //问题? 如何将resultChan中的值全部收集到res变量中???

    fmt.Println(res)
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
1.2k views
Welcome To Ask or Share your Answers For Others

1 Answer

按我的理解,我写的代码。。

package main

import (
    "fmt"
    "sync"
)

func main() {
    resultChan := make(chan int)
    var wg sync.WaitGroup
    for i := 1; i <= 10; i++ {
        wg.Add(1)
        go func(resultChan chan int) {
            defer wg.Done()
            //收集结果,比如接口调用的返回的结构,存入channal中
            resultChan <- 1
        }(resultChan)
    }

    //存放resultChan中的值
    var res []int

    go func() {
        wg.Wait()
        close(resultChan)
    }()

    for tmp := range resultChan {
        res = append(res, tmp)
    }

    fmt.Println(res)

}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...