第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

解鎖即可觀看《Go開發(fā)工程師》完整課程視頻

Go開發(fā)工程師

未來3-5年企業(yè)高性能項(xiàng)目不可替代的語言,從基礎(chǔ)到項(xiàng)目實(shí)戰(zhàn)再到重構(gòu),真正從入門到精通

【第1周】Go基礎(chǔ)知識(shí)入門
【第2周】容器,go編程思想
【第3周】Go并發(fā)編程和工程管理
【第4周】從0開始理解rpc和grpc
【第5周】grpc和protobuf進(jìn)階
【第6周】 yapi文檔管理、gorm詳解
【第7周】gin快速入門
【第8周】用戶服務(wù)的grpc服務(wù)
【第9周】用戶服務(wù)的web服務(wù)
【第10周】服務(wù)注冊(cè)/發(fā)現(xiàn)、配置中心、負(fù)載均衡
【第11周】商品微服務(wù)的grpc服務(wù)
【第12周】 商品微服務(wù)的gin層和oss圖片服務(wù)
【第13周】庫(kù)存服務(wù)和分布式鎖
【第14周】訂單和購(gòu)物車微服務(wù)
【第15周】 支付寶支付、用戶操作微服務(wù)、前后端聯(lián)調(diào)
【第16周】elasticsearch實(shí)現(xiàn)搜索微服務(wù)
【第17周】 分布式理論基礎(chǔ)、分布式事務(wù)解決方案
【第18周】 學(xué)習(xí)rocketmq實(shí)現(xiàn)冪等性機(jī)制等
【第19周】鏈路追蹤、限流、熔斷、降級(jí)
【第20周】api網(wǎng)關(guān)、部署
【第21周】開發(fā)規(guī)范和go基礎(chǔ)擴(kuò)展
【第22周】設(shè)計(jì)模式和單元測(cè)試
【第23周】protoc插件開發(fā)、cobra命令行
【第24周】log日志包設(shè)計(jì)
【第25周】ast代碼生成工具開發(fā)
【第26周】三層代碼結(jié)構(gòu)
【第27周】grpc服務(wù)封裝更方便的rpc服務(wù)
【第28周】深入grpc的服務(wù)注冊(cè)、負(fù)載均衡原理
【第29周】基于gin封裝api服務(wù)
【第30周】可觀測(cè)的終極解決方案
【第31周】系統(tǒng)監(jiān)控核心
【第32周】用戶、商品服務(wù)重構(gòu)
【第33周】訂單、庫(kù)存等服務(wù)重構(gòu)
【第33+周】訂單服務(wù)重構(gòu)、wire進(jìn)行ioc控制
【第34周】通過k8s部署服務(wù)
【第34+周】devops和k8s
章節(jié)
問答
課簽
筆記
評(píng)論
占位
占位

Go語言-通道類型

    通道(Channel)是Go語言中一種非常獨(dú)特的數(shù)據(jù)結(jié)構(gòu)。它可用于在不同Goroutine之間傳遞類型化的數(shù)據(jù),并且是并發(fā)安全的。相比之下,我們之前介紹的那些數(shù)據(jù)類型都不是并發(fā)安全的。這一點(diǎn)需要特別注意。
  
    Goroutine(也稱為Go程序)可以被看做是承載可被并發(fā)執(zhí)行的代碼塊的載體。它們由Go語言的運(yùn)行時(shí)系統(tǒng)調(diào)度,并依托操作系統(tǒng)線程(又稱內(nèi)核線程)來并發(fā)地執(zhí)行其中的代碼塊。至于怎樣編寫這樣的代碼塊以及怎樣驅(qū)動(dòng)這樣的代碼塊執(zhí)行,我們先按下不表。
  
    通道類型的表示方法很簡(jiǎn)單,僅由兩部分組成,如下:

chan T    

    在這個(gè)類型字面量中,左邊是代表通道類型的關(guān)鍵字chan,而右邊則是一個(gè)可變的部分,即代表該通道類型允許傳遞的數(shù)據(jù)的類型(或稱通道的元素類型)。這兩部分之間需要以空格分隔。
  
    與其它的數(shù)據(jù)類型不同,我們無法表示一個(gè)通道類型的值。因此,我們也無法用字面量來為通道類型的變量賦值。我們只能通過調(diào)用內(nèi)建函數(shù)make來達(dá)到目的。make函數(shù)可接受兩個(gè)參數(shù)。第一個(gè)參數(shù)是代表了將被初始化的值的類型的字面量(比如chan int),而第二個(gè)參數(shù)則是值的長(zhǎng)度。例如,若我們想要初始化一個(gè)長(zhǎng)度為5且元素類型為int的通道值,則需要這樣寫:

make(chan int, 5)    

    順便說一句,實(shí)際上make函數(shù)也可以被用來初始化切片類型或字典類型的值。


    確切地說,通道值的長(zhǎng)度應(yīng)該被稱為其緩存的尺寸。換句話說,它代表著通道值中可以暫存的數(shù)據(jù)的個(gè)數(shù)。注意,暫存在通道值中的數(shù)據(jù)是先進(jìn)先出的,即:越早被放入(或稱發(fā)送)到通道值的數(shù)據(jù)會(huì)越先被取出(或稱接收)。
    
    下面,我們聲明一個(gè)通道類型的變量,并為其賦值:

ch1 := make(chan string, 5)   

    這樣一來,我們就可以使用接收操作符<-向通道值發(fā)送數(shù)據(jù)了。當(dāng)然,也可以使用它從通道值接收數(shù)據(jù)。例如,如果我們要向通道ch1發(fā)送字符串"value1",那么應(yīng)該這樣做:

ch1 <- "value1"  

    另一方面,我們?nèi)粝霃?code class="marker">ch1那里接收字符串,則要這樣:

<- ch1    

    這時(shí),我們可以直接把接收到的字符串賦給一個(gè)變量,如:

value := <- ch1    

    與針對(duì)字典值的索引表達(dá)式一樣,針對(duì)通道值的接收操作也可以有第二個(gè)結(jié)果值。請(qǐng)看下面的示例:

value, ok := <- ch1     


    這樣做的目的同樣是為了消除與零值有關(guān)的歧義。這里的變量ok的值同樣是bool類型的。它代表了通道值的狀態(tài),true代表通道值有效,而false則代表通道值已無效(或稱已關(guān)閉)。更深層次的原因是,如果在接收操作進(jìn)行之前或過程中通道值被關(guān)閉了,則接收操作會(huì)立即結(jié)束并返回一個(gè)該通道值的元素類型的零值。按照上面的第一種寫法,我們無從判斷接收到零值的原因是什么。不過,有了第二個(gè)結(jié)果值之后,這種判斷就好做了。
   
    說到關(guān)閉通道值,我們可以通過調(diào)用內(nèi)建函數(shù)close來達(dá)到目的,就像這樣:

close(ch1)   

    請(qǐng)注意,對(duì)通道值的重復(fù)關(guān)閉會(huì)引發(fā)運(yùn)行時(shí)恐慌。這會(huì)使程序崩潰。所以一定要避免這種情況的發(fā)生。另外,在通道值有效的前提下,針對(duì)它的發(fā)送操作會(huì)在通道值已滿(其中緩存的數(shù)據(jù)的個(gè)數(shù)已等于它的長(zhǎng)度)時(shí)被阻塞。而向一個(gè)已被關(guān)閉的通道值發(fā)送數(shù)據(jù)會(huì)引發(fā)運(yùn)行時(shí)恐慌。另一方面,針對(duì)有效通道值的接收操作會(huì)在它已空(其中沒有緩存任何數(shù)據(jù))時(shí)被阻塞。除此之外,還有幾條與通道的發(fā)送和接收操作有關(guān)的規(guī)則。不過在這里我們記住上面這三條就可以了。
  
  最后,與切片和字典類型相同,通道類型屬于引用類型。它的零值即為nil

任務(wù)

請(qǐng)?jiān)诿钤创a文件index.go的第 12 和 15 行的圓括號(hào)中填入相應(yīng)代碼,使程序打印到標(biāo)準(zhǔn)輸出上的內(nèi)容為“數(shù)據(jù)已到達(dá)!”。提示,在第15行,只能使用針對(duì)通道值的某種操作。

?不會(huì)了怎么辦

在第12行,應(yīng)該填入"已達(dá)到!"。在第15行,應(yīng)該填入<-ch2。

 

||

提問題

寫筆記

公開筆記
提交
||

請(qǐng)驗(yàn)證,完成請(qǐng)求

由于請(qǐng)求次數(shù)過多,請(qǐng)先驗(yàn)證,完成再次請(qǐng)求

加群二維碼

打開微信掃碼自動(dòng)綁定

您還未綁定服務(wù)號(hào)

綁定后可得到

  • · 粉絲專屬優(yōu)惠福利
  • · 大咖直播交流干貨
  • · 課程更新,問題答復(fù)提醒
  • · 賬號(hào)支付安全提醒

收藏課程后,能更快找到我哦~

使用 Ctrl+D 可將課程添加到書簽

邀請(qǐng)您關(guān)注公眾號(hào)
關(guān)注后,及時(shí)獲悉本課程動(dòng)態(tài)

舉報(bào)

0/150
提交
取消
全部 精華 我要發(fā)布
全部 我要發(fā)布
最熱 最新
只看我的

手記推薦

更多

本次提問將花費(fèi)2個(gè)積分

你的積分不足,無法發(fā)表

為什么扣積分?

本次提問將花費(fèi)2個(gè)積分

繼續(xù)發(fā)表請(qǐng)點(diǎn)擊 "確定"

為什么扣積分?