<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ### 作用 go里面提供了一個關鍵字select ,通過select可以監聽channel上的數據流動. select的用法與switch語言非常類似,由select開始一個新的選擇塊,每個選擇條件由case語句來描述. 與switch語句可以選擇任何可使用相等比較的條件相比,select有比較多的限制,其中最大的一條限制就是每個 **case語句里面必須是一個IO操作**,大致的結構如下 : ~~~ select { case <-chan1: //如果chan1成功讀到數據,則進行該case處理語句 case chan2 <- 1: //如果成功向chan2寫入數據,則進行該case處理語句 default: //如果上面都沒有成功,則進入default處理流程.一般default不寫,否則就從阻塞編程輪詢了,比較耗費CPU資源 } ~~~ 在一個select語句中,go語言會按順序從頭至尾評估每一個發送和接收的語句. 如果其中的任意一語句可以繼續執行(即沒有被阻塞),那么就從哪些可以執行語句中任意選擇一條來使用. 如果沒有任意一條語句可以執行(即所有的通道都被阻塞),那么有兩個可能的情況 : * 如果給出了default語句,那么就會執行default語句,同事程序的執行會從select語句后的語句中恢復. * 如果沒有default語句,那么select語句將被阻塞,知道至少有一個通信可以進行下去. ### 實例 ~~~ //ch只寫,quit只讀 func fibonacci(ch chan<- int, quit <-chan bool) { x, y := 1, 1 for { select { case ch <- x: x, y = y, x+y case flag := <-quit: fmt.Println("flag = ", flag) return } } } func main() { ch := make(chan int) //數字通信 quit := make(chan bool) //程序是否結束 //消費者,從channel讀取內容 go func() { for i := 0; i < 8; i++ { num := <-ch fmt.Println(num) } //可以停止 quit <- true }() //生產者,產生數字,寫入channel fibonacci(ch, quit) } ~~~ ~~~ 1 1 2 3 5 8 13 21 flag = true ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看