package main
import (
"fmt"
"time"
)
func main() {
// select語句屬於條件分支流程控制語句,不過它只能用於通道。它可以包含若干條case語句,並根據條件選擇其中之一執行。
// select語句的case關鍵詞只能後跟用於通道的發送操作的表達式以及接受操作的表達式或語句。
// golang 的 select 的功能和 select, poll, epoll 相似, 就是監聽 IO 操作,當 IO 操作發生時,觸發相應的動作。
var ch1 = make(chan int)
//生成一個協程
go func() {
for i := 0; i < 3; i++ {
ch1 <- i
}
}()
defer close(ch1)
done := 0
finished := 0
for finished < 3 {
select {
case v, ok := <-ch1:
if ok {
done = done + 1
fmt.Println(v)
}
}
finished = finished + 1
}
fmt.Println("Done", done)
//當for 和 select結合使用時,break語言是無法跳出for之外的,因此若要break出來,這裡需要加一個標簽,使用goto, 或者break 到具體的位置
//這裡是使用break樣例
i := 0
forend:
for {
select {
case <-time.After(time.Second * time.Duration(2)):
i++
if i == 5 {
fmt.Println("break now")
break forend
}
fmt.Println("inside the select: ")
}
}
//這裡使用goto
i = 0
for {
select {
case <-time.After(time.Second * time.Duration(2)):
i++
if i == 5 {
fmt.Println("break now")
goto ForEnd
}
fmt.Println("inside the select: ")
}
fmt.Println("inside the for: ")
}
ForEnd:
}select語句屬於條件分支流程控制語句,不過它只能用於通道。它可以包含若干條case語句,並根據條件選擇其中之一執行。
閲完此文,您的感想如何?
-
有用
0
-

沒用
0
-

開心
0
-

憤怒
0
-

可憐
0
1.如文章侵犯了您的版權,請發郵件通知本站,該文章將在24小時内刪除;
2.本站標注原創的文章,轉發時煩請注明來源;
3.交流群: 2702237 13835667
相關課文
-
GO語言GORM如何更新字段
-
gorm如何創建記錄與模型定義需要注意什麽
-
gorm一般查詢與高級查詢
-
GORM時間戳跟蹤及CURD(增刪改查)
我要說說
網上賓友點評
課文推薦