select操作
发布时间:2020-12-16 09:20:44 所属栏目:大数据 来源:网络整理
导读:1.Go语言中打印结构体推荐使用“%+v”,而不是“%v”。看一下二者区别: v := info{"Nan",33} fmt.Printf("%vn",v) // {Nan 33} fmt.Printf("%+vn",v) // {name:Nan id:33} //2.select对管道的操作:https://www.jianshu.com/p/2a1146dc42c3func test(){ va
1.Go语言中打印结构体推荐使用“%+v”,而不是“%v”。看一下二者区别: v := info{"Nan",33} fmt.Printf("%vn",v) // {Nan 33} fmt.Printf("%+vn",v) // {name:Nan id:33} // 2.select对管道的操作: https://www.jianshu.com/p/2a1146dc42c3 func test(){ var data = make(chan int,10) for i :=0; i<10; i++{ //fmt.Println(1) select { case x:= <-data: //fmt.Println(x) fmt.Println("send data:",x) //list2 = append(list2,x) case data <- getData(i): fmt.Println("get data,",i) //list2 = append(list2,i) } } fmt.Println(data) fmt.Println(list2) } func getData(i int)(ss int){ //fmt.Println("get...",i) return i } select 基本用法 1、如果多个通道都阻塞了,会等待知道其中一个通道可以处理。 2、如果多个通道都可以处理,随机选取一个处理。 3、如果没有通道操作可以操作并且写了default语句,会执行:default(永远是可以运行的) 4、如果防止select堵塞,可以写default来确保发送不被堵塞,没有case的select就会一直堵塞。 5、当select做选择case和default操作时,case的优先级大于default。 6、select语句实现了一种监听模式,通常在无限循环中使用,通过在某种情况下,通过break退出循环。 7、从case中取数据时,case data <- getData(i):会执行getData但不会往管道data中存入数据. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |