GO精髓(Channel)
阿新 • • 發佈:2020-12-21
通道(Channel)
/* 通道(channel)是用來傳遞資料的一個數據結構。 */ ch1 := make(chan int ,2) //建立一個可讀可寫的雙向管道 ch1 <- 10 ch1 <- 12 m1 := <-ch1 m2 := <-ch1 fmt.Println(m1,m2) ch2 := make(chan <- int ,2) //建立一個只可寫的管道 ch2 <- 10 ch2 <- 12 ch3 := make(<-chan int ,2) //建立一個只可讀的管道
select(多路複用)
//定義個管道 10個數據int intChan := make(chan int,10) for i:=1 ; i< 10 ;i++ { intChan <- i } //定義個管道 10個 資料string stringChan := make(chan string ,10) for i:=1 ;i < 5 ;i++ { stringChan <- "hello"+fmt.Sprintf("%d",i) } //使用select不需要關閉channel for { select { case v := <-intChan: fmt.Println("從intChan裡面取資料%d",v) time.Sleep(time.Millisecond * 50) case v := <-stringChan: fmt.Println("從stringChan裡面取資料%v",v) time.Sleep(time.Millisecond * 50) default: fmt.Println("所有資料獲取完畢") return //跳出迴圈 } }