栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

通道是否返回两个值?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通道是否返回两个值?

接收操作符

ok
返回的布尔变量指示接收的值是在通道上发送的(true)还是由于通道关闭且为空而返回的零值(false)。

for
当Go程序的其他部分关闭
fromServer
fromUser
通道时,循环终止。在这种情况下,其中一个case语句将设置
ok
为true。因此,如果用户关闭连接或远程服务器关闭连接,程序将终止。

http://play.golang.org/p/4fJDkgaa9O:

package mainimport "runtime"func onServer(i int) { println("S:", i) }func onUser(i int)   { println("U:", i) }func main() {    fromServer, fromUser := make(chan int),make(chan int)    var serverData, userInput int    var ok bool    go func() {        fromServer <- 1        fromUser <- 1        close(fromServer)        runtime.Gosched()        fromUser <- 2        close(fromUser)    }()    isRunning := true    for isRunning {        select { case serverData, ok = <-fromServer:     if ok {         onServer(serverData)     } else {         isRunning = false     } case userInput, ok = <-fromUser:     if ok {         onUser(userInput)     } else {         isRunning = false     } }        }        println("end")}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/471120.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号