登录
首页 >  Golang >  Go问答

其他案例为什么没有成功打印?

来源:stackoverflow

时间:2024-03-03 22:15:10 296浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《其他案例为什么没有成功打印?》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

当我运行这段代码时,我不明白为什么在打印 x 后它不打印其他情况。 我希望我应该看到 x 将其打印出来三秒钟,然后最后从 server2 打印出来

package main


func server1(ch chan string) {
    time.Sleep(6 * time.Second)
    ch <- "from server1"
}
func server2(ch chan string) {
    time.Sleep(3 * time.Second)
    ch <- "from server2"

}
func main() {
    output1 := make(chan string)
    output2 := make(chan string)
    go server1(output1)
    go server2(output2)
    select {
    case s1 := <-output1:
        fmt.Println(s1)
    case s2 := <-output2:
        fmt.Println(s2)
    default:
        fmt.Println(“X”)
    }
}

正确答案


func main() {
    output1 := make(chan string)
    output2 := make(chan string)
    go server1(output1)
    go server2(output2)
    for {
        select {
        case s1 := <-output1:
            fmt.Println(s1)
        case s2 := <-output2:
            fmt.Println(s2)
        default: // todo: return
            fmt.Println("X")
        }
    }
}

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《其他案例为什么没有成功打印?》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>