登录
首页 >  Golang >  Go问答

Go select 语句解决方法中的优先级

来源:Golang技术栈

时间:2023-04-29 21:03:36 267浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《Go select 语句解决方法中的优先级》,主要介绍了golang,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

我希望在两个频道上进行常规收听,当两个频道都耗尽时被阻塞。但是,如果两个通道都包含数据,我希望在处理另一个通道之前将一个通道排空。

在下面的工作示例中,我希望在处理out之前将所有内容都排空exit。我使用select没有任何优先顺序的 - 语句。我该如何解决这个问题,在退出之前处理所有 10 个输出值?

package main

import "fmt"

func sender(out chan int, exit chan bool){
    for i := 1; i 

正确答案

package main

import "fmt"

func sender(out chan int, exit chan bool) {
    for i := 1; i 

第一个选择的默认情况使其非阻塞。select 将在不查看退出通道的情况下耗尽 out 通道,否则不会等待。如果输出通道为空,则立即下降到第二个选择。第二个选择是阻塞的。它将等待任一通道上的数据。如果出现退出,它会处理它并允许循环退出。如果数据来了,它会回到循环的顶部并返回到排水模式。

以上就是《Go select 语句解决方法中的优先级》的详细内容,更多关于golang的资料请关注golang学习网公众号!

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