下面由golang教程栏目给大家介绍关于golang select典型用法,希望对需要的朋友有所帮助!

code
package main
import (
"fmt"
"time"
)
func chanTest(ch chan int) {
for { //select外层需要循环 select { case value, ok := <-ch:
fmt.Println(value, ok, time.Now()) if ok == false {
fmt.Println("chan已经关闭", time.Now()) //select要自己判断退出,如果是for..range 形式,在读取完了关闭的chanel后,退出循环
return
} default:
fmt.Println("chan 空了", time.Now()) time.Sleep(time.Second * 5) //分支的处理会阻塞整个select
}
}
}
func main() {
var ch = make(chan int, 100) go chanTest(ch)
ch <- 1
ch <- 2
time.Sleep(time.Second * 2)
ch <- 3
ch <- 4
time.Sleep(time.Second) close(ch) for { time.Sleep(time.Second)
}
}需要注意的是,select的 defalut会丢弃数据,chan已满的情况,入chan的数据会被丢弃
本课程在设计上本着懂方法,重应用的总体思路,突出体现职业教育的技能型、应用性特色,着重培养学生的实践应用技能,力求达到理论方法够用,技术技能过硬的目的。 通过本课程的学习,使学生具备Android平台应用开发相关知识、良好的编程习惯和手机应用软件开发的能力,能胜任基于Android平台的手机软件研发等工作任务。感兴趣的朋友可以过来看看









