<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## **一:管道的使用** 1. 創建一個可以存放3 個int 類型的管道 ![](https://img.kancloud.cn/01/27/012755179b090e9836d45648bf562267_1209x335.png) <br> <br> **代碼解析** ``` package main import("fmt") func main(){ var intchan chan int // chan是關鍵字:【管道】,int則是管道的類型 intchan = make(chan int,3) fmt.Println(intchan) // 已這樣方式獲取打印出的則是intchan的內存地址,后期我們將如何獲取值 } ``` **運行結果** `0xc00000e028` <br> <br> 2. 查看intchan的內存地址,以及chan本身的內存地址 ![](https://img.kancloud.cn/b1/58/b1582acbab59a2ee0f1cfdaf1cc2c96c_1209x356.png) <br> <br> **運行結果** ``` intchan的內存地址是0xc0000ba000 chan本身的內存地址是0xc0000b4018 ``` <br> <br> 3. 向管道寫入數據 ![](https://img.kancloud.cn/b9/3e/b93ea4d2ec1e38be605cdc2fad877daf_1209x441.png) **這里我們注意到,make的時候我們給了3個容量,下面寫入是三個,如果寫4個會失敗嗎?為什么?** **示例:** ![](https://img.kancloud.cn/cb/46/cb466d0ac8e99aa0242cb18c07816f31_1209x441.png) **運行結果:** ``` fatal error: all goroutines are asleep - deadlock! goroutine 1 [chan send]: main.main() /Users/wang/go/src/awesomeProject/lianxi/main/channel_demo03write.go:10 +0xae ``` 看到上面的運行結果第10行代碼引發了一個`deadlock`的錯誤,**當我們往管道里寫入數據時,不得超過管道定義時的容量** <br> <br> 4. 查看管道的容量和長度 ![](https://img.kancloud.cn/af/2d/af2d3a13f4d9de0c6d5e897cda410bb9_1209x420.png) <br> <br> 5. 從管道中讀取數據【關鍵字符<-在管道的前面】 ![](https://img.kancloud.cn/e2/14/e214b1575992bf230499f128ea825ee2_1209x526.png) **運行結果** ``` sum讀取到數據為10 intchan的長度為2 intchan的容量為3 ``` <br> <br> 6. 在沒有使用協程的情況下,如果我們的管道數據已經全部取出,再取就會報告?deadlock ![](https://img.kancloud.cn/b7/d5/b7d55db9b8bb489fe6bff2b9520d7d90_1209x718.png) **運行結果** ``` intchan的內存地址是0xc00012e000 chan本身的地址是0xc000124018intchan len = 3 cap = 3res讀取到的數據為10 intchan的長度為2 intchan的容量為3fatal error: all goroutines are asleep - deadlock! goroutine 1 [chan receive]: main.main() /Users/wang/go/src/awesomeProject/lianxi/main/channel_demo05read_err.go:23 +0x462 ``` 如上已經報錯,第23行超讀引發了錯誤,因為定義channel時我們設置的容量是3,寫是3,但是讀取16行21行22行已經讀取完畢,23行未讀到內容引發錯誤 注釋23行,執行一遍在看結果 ![](https://img.kancloud.cn/a4/ff/a4ff3366a003b3b15d5524e6550a6e38_1209x718.png) <br> **運行結果** ``` intchan的內存地址是0xc00006e000 chan本身的地址是0xc00000e028intchan len = 3 cap = 3res讀取到的數據為10 intchan的長度為2 intchan的容量為3res1 = 20 res2 = 30 ```
                  <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>

                              哎呀哎呀视频在线观看