Golang
switch-case 与select
如题来看一下switch-case 与select 是如何运作的,废话不多说,直接上个范例来瞧瞧吧!
switch-case
package main
import "fmt"
func getType(i interface{}) {
switch t := i.(type) {
case int:
fmt.Printf("is interger %d \n", t)
case string:
fmt.Printf("is string %s \n", t)
case float64:
fmt.Printf("is float64 %v \n", t)
default:
fmt.Printf("type error")
}
}
func main() {
var i int = 100
getType(i)
var j float64 = 45.55
getType(j)
var k string = "foo"
getType(k)
}
Select
Select 是监听,以下的部分我是觉得有点难懂,所以只能大概大概地写出来,可能需要真的使用到的时候才能理解其作用
package main
import "fmt"
func main() {
ch := make(chan int, 1)
ch <- 1
select {
case <-ch:
fmt.Println("random 01")
case <-ch:
fmt.Println("random 02")
}
}
这样执行的时候,其实是会随机乱跳的,如果把ch <- 1注解起来,则是会报错” deadlock!”,这时候如果把程序码修改为
package main
import "fmt"
func main() {
ch := make(chan int, 1)
select {
case <-ch:
fmt.Println("random 01")
case <-ch:
fmt.Println("random 02")
default:
fmt.Println("exit")
}
}
这样就没事情了,因为在有default的情况下会去执行他
Select基本上只能应用於channel上,以范例来看是可以做channel的资料接收及沟通使用。如果有满足多个条件则是随机选择,但在switch-case这点就比较不同,就跟其他语言雷同,是看顺序的。
>>: Day 0x8 UVa10193 All You Need Is Love
前言 有了资料後,就要进行分析,因此需要做出图表比较适合观察,所以我们现在来做图罗! 本日程序码使用...
[Day4] Array Cardio Day 1 Javascript 的技巧 需要用到的技巧与练...
今天要解2题喔, 我们先解完,再来分享为啥标题要叫小孔雀 先从简单的来 Mind your Ps a...
在操作元件那天,已经大略谈到在Activity 上架上元件就像在写Windows Form 上的元件...
While working on Microsoft outlook account, I am n...