這篇文章將為大家詳細(xì)講解有關(guān)關(guān)于golang當(dāng)中對(duì)select的分析,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
成都創(chuàng)新互聯(lián)公司主營(yíng)龍南網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,App定制開(kāi)發(fā),龍南h5微信平臺(tái)小程序開(kāi)發(fā)搭建,龍南網(wǎng)站營(yíng)銷推廣歡迎龍南等地區(qū)企業(yè)咨詢Select 語(yǔ)句和 Swithc 語(yǔ)句的句式十分相似,但是 Select 中的 Case 必須是一個(gè)通信操作(一個(gè) Channel 操作)。其執(zhí)行邏輯是:哪一個(gè) Case 后面的 Channel 操作可以被成功執(zhí)行,則執(zhí)行該 Case 下的代碼塊。如果同時(shí)多個(gè) Case 可被成功執(zhí)行,則隨機(jī)選擇其中一個(gè)。如果所有 Case 均不可被成功執(zhí)行,則執(zhí)行 default 下的代碼塊。如果沒(méi)有 default 則會(huì)阻塞并返回死鎖錯(cuò)誤。
監(jiān)聽(tīng) IO 操作,當(dāng) IO 操作發(fā)生時(shí),觸發(fā)相應(yīng)的動(dòng)作
這個(gè)說(shuō)法是對(duì)的,監(jiān)聽(tīng)(Channel 的) IO 操作并作出相應(yīng)動(dòng)作確實(shí)是 Select 的應(yīng)用場(chǎng)景,但是千萬(wàn)不要誤以為 Select 語(yǔ)句是在選擇哪個(gè) case 下的 Channel 操作被執(zhí)行了!這么理解是錯(cuò)的!Select 真正會(huì)選擇的是哪個(gè) case 下的 Channel 操作可以被成功執(zhí)行,則執(zhí)行該 case 下的代碼塊。
比如,當(dāng)一個(gè) Channel c1 被寫(xiě)入一條數(shù)據(jù)
c1 := make(chan string, 1)c1 <- "Hello World!"
如果我們有以下 Select 判斷語(yǔ)句
select { case <-c1: fmt.Println("Case 1 is selected") case c1<-"Hello World!": fmt.Println("Case 2 is selected") default : fmt.Println("Default is selected")}
你會(huì)得到如下結(jié)果
Case 1 is selected
因?yàn)?c1 被寫(xiě)入了一條數(shù)據(jù),所以我們可以成功 “從 c1 讀出一條數(shù)據(jù)”。也就是第一個(gè) case 可以被成功執(zhí)行。所以,第一個(gè) case 下的代碼塊最終被執(zhí)行。
關(guān)于關(guān)于golang當(dāng)中對(duì)select的分析就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
網(wǎng)站名稱:關(guān)于golang當(dāng)中對(duì)select的分析-創(chuàng)新互聯(lián)
標(biāo)題來(lái)源:http://aaarwkj.com/article14/hooge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、靜態(tài)網(wǎng)站、小程序開(kāi)發(fā)、網(wǎng)站內(nèi)鏈、企業(yè)網(wǎng)站制作、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容