登录
首页 >  Golang >  Go问答

selectnbrecv 函数在 Go 中的用途是什么?

来源:stackoverflow

时间:2024-02-20 21:21:14 158浏览 收藏

golang学习网今天将给大家带来《selectnbrecv 函数在 Go 中的用途是什么?》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习Golang或者已经是大佬级别了,都非常欢迎也希望大家都能给我建议评论哈~希望能帮助到大家!

问题内容

我正在对 Go 二进制文件进行逆向工程,并遇到了函数 selectnbrecv。但是,我不明白文档。如果有人可以向我解释该函数的上下文和操作,我将不胜感激。谢谢!


解决方案


它是 go 运行时内部实现,用于从通道进行非阻塞接收:
当通道有任何事件时,selectnbrecv 函数返回 true,否则返回 false(对于 nil 通道返回 false): 它在通道上接收并将接收到的数据写入 v (如果 &v 不为 nil,则忽略接收到的数据。)如果没有可用数据,则返回 false。否则,如果通道关闭,则将 v 归零并返回 true。否则,用数据填充 v 并返回 true

// compiler implements
//
//  select {
//  case v = <-c:
//      ... foo
//  default:
//      ... bar
//  }
//
// as
//
//  if selectnbrecv(&v, c) {
//      ... foo
//  } else {
//      ... bar
//  }
//
func selectnbrecv(elem unsafe.Pointer, c *hchan) (selected bool) {
    selected, _ = chanrecv(c, elem, false) // false for non blocking
    return
}

本篇关于《selectnbrecv 函数在 Go 中的用途是什么?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

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