• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    Go元素的關鍵字所在--chan通道

    來源:懂視網 責編:小采 時間:2020-11-27 15:23:36
    文檔

    Go元素的關鍵字所在--chan通道

    Go元素的關鍵字所在--chan通道:HTML validate是指HTML驗證。它是通過與標準HTML規則進行比較的方式,分析HTML文檔、標記出錯誤和非標準代碼的處理過程。Web頁面使用HTML進行渲染,而HTML本身采用了HTML規范作為其規則和標準。通過驗證HTML代碼穿越多重瀏覽器標準!chanchan又稱之為
    推薦度:
    導讀Go元素的關鍵字所在--chan通道:HTML validate是指HTML驗證。它是通過與標準HTML規則進行比較的方式,分析HTML文檔、標記出錯誤和非標準代碼的處理過程。Web頁面使用HTML進行渲染,而HTML本身采用了HTML規范作為其規則和標準。通過驗證HTML代碼穿越多重瀏覽器標準!chanchan又稱之為

    讀取通道操作:

    val,ok := <-ch

    使用斷言讀取通道中的值,檢查通道是否還有內容,以及判斷通道是否已經關閉,當通道中沒有信息,且通道已經關閉時,ok值為false,當通道沒有關閉,但是通道中沒有信息,程序將會阻塞,如果通道中有內容,則ok值是true。

    另一種不使用斷言的方式讀取通道

    val := <-ch

    寫入與讀取通道

    讀取不帶緩沖的通道示例方法:

    package mainimport ( "fmt")func main() { // 定義一個不帶緩沖的通道,通道中數據類型是int
     var c = make(chan int) // 開啟一個攜程,讀取通道中的內容
     go func() {
     fmt.Println("寫入信息是:", <-c)
     }() // 向通道中寫入數據
     c <- 1}

    輸出結果:

    寫入信息是: 1

    當對帶緩沖的通道進行讀寫時,只要通道中數據長度不大于緩沖長度,就不會出現阻塞,但是讀取帶緩沖的通道,通道中沒有內容時,程序依然會進入阻塞狀態。所以,帶緩沖的通道,只對寫入產生影響。下邊來一個示例:

    package mainimport ( "fmt")func main() { var c = make(chan int, 3)
     c <- 1
     c <- 2
     c <- 3
     //c <- 4
     fmt.Println("end")
    }

    輸出信息是:

    end

    當向帶3個緩沖的通道中寫入內容時,由于只寫入了3次,通道的長度剛好等于緩沖的長度,程序沒有阻塞,當將 c <- 4 前邊的注釋去掉后,由于沒有程序去讀取這個通道,主程序進入死鎖狀態而導致異常。

    協程通信

    通道類型變量的實質上是一個地址,如下邊示例代碼:

    package mainimport ( "fmt")func main() { var c = make(chan int, 3)
     fmt.Println(c)
    }

    輸出結果:

    0xc042072080

    所以,當通道類型變量當做參數傳入函數后,在函數中可以直接對通道中的值進行修改。雖然chan類型變量是一個地址,但是golang不允許使用取值操作符( * )來操作chan類型變量。但是如果你先對chan類型變量使用取地址操作符(&),然后再使用取值操作符(*),這種操作方法還是可以正常運行的,但是這意義不大,除非你的目的是在函數調用中,重新定義一個chan類型變量替換原來的變量。

    chan的這些特性,可以很好的實現協程之間的同步功能。不帶緩沖的通道,是一種零容忍的等待,可以實現強制同步;帶緩沖的通道,是有一定量容忍度的等待,可以實現允許有一定時間差的同步。

    簡單的協程間通信例子:

    package mainimport ( "fmt"
     "time")func main() { var c = make(chan int) go func() {
     fmt.Println("待命模式:") // 讀取通道時產生阻塞,等待其他協程向通道寫入信息
     fmt.Println("命令代碼是:", <-c)
     }() go func() { // 延時3秒,向通道中寫入信息
     time.Sleep(time.Second * 3)
     fmt.Println("發送命令:")
     c <- 8
     close(c)
     }()
     time.Sleep(time.Second * 5)
     fmt.Println("執行完成")
    }

    輸出信息是:

    待命模式:
    發送命令:
    命令代碼是: 8
    執行完成

    相關推薦:

    HTML validate HTML驗證_HTML/Xhtml_網頁制作

    HTML技巧匯編_CSS/HTML

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    Go元素的關鍵字所在--chan通道

    Go元素的關鍵字所在--chan通道:HTML validate是指HTML驗證。它是通過與標準HTML規則進行比較的方式,分析HTML文檔、標記出錯誤和非標準代碼的處理過程。Web頁面使用HTML進行渲染,而HTML本身采用了HTML規范作為其規則和標準。通過驗證HTML代碼穿越多重瀏覽器標準!chanchan又稱之為
    推薦度:
    標簽: 通道 關鍵字 go
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 99在线精品视频观看免费| 99久久精品免费看国产一区二区三区| 91麻豆国产福利精品| 亚洲精品成人片在线观看| 国产精品毛片久久久久久久| 宅男在线国产精品无码| 精品伦精品一区二区三区视频| 国产一成人精品福利网站| 久久这里只有精品18| 婷婷久久精品国产| 精品国产一区二区三区在线观看| 欧美精品第欧美第12页| 99精品免费视频| 国产乱人伦偷精品视频AAA| 亚洲精品无码久久不卡| 久久久久亚洲精品天堂久久久久久 | 国产精品无码一区二区三级| 亚洲av无码成人精品国产| 国产精品青青在线观看爽香蕉| 99久久精品九九亚洲精品| 麻豆精品不卡国产免费看| 国产精品影音先锋| 欧美精品天天操| 欧美精品国产精品| 91精品国产品国语在线不卡| 日本一区二区三区精品中文字幕| 久久精品国产半推半就| 日韩精品在线一区二区| 在线精品视频播放| 国产高清在线精品一区小说| 99在线精品免费视频| 国产精品免费大片一区二区| 国产三级精品三级在线观看| 国产欧美精品区一区二区三区 | 国产精品一区二区av| 国产精品一区二区av| 国产精品久久久久久| 日韩精品www| 国产亚洲精品激情都市| 欧美日韩国产精品| 亚洲精品无码永久在线观看你懂的 |