golang的channel使用
发布时间:2020-12-16 19:28:37 所属栏目:大数据 来源:网络整理
导读:channel sample1 close twice ch := make(chan bool)close(ch)close(ch) // 这样会panic的,channel不能close两次 读取的时候channel提前关闭了 ch := make(chan string)close(ch)i := - ch // 不会panic,i读取到的值是空 "",如果channel是bool的,那么读取
channelsample1 close twicech := make(chan bool) close(ch) close(ch) // 这样会panic的,channel不能close两次 读取的时候channel提前关闭了ch := make(chan string) close(ch) i := <- ch // 不会panic,i读取到的值是空 "",如果channel是bool的,那么读取到的是false 向已经关闭的channel写数据http://play.golang.org/p/vl5d5tkfl7ch := make(chan string) close(ch) ch <- "good" // 会panic的 判断channel是否closei,ok := <- ch if ok { println(i) } else { println("channel closed") } for循环读取channelfor i := range ch { // ch关闭时,for循环会自动结束 println(i) } 防止读取超时select { case <- time.After(time.Second*2): println("read channel timeout") case i := <- ch: println(i) } 防止写入超时 http://play.golang.org/p/aODfPNwdmj// 其实和读取超时很像 select { case <- time.After(time.Second *2): println("write channel timeout") case ch <- "hello": println("write ok") } 参考
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |