本篇內(nèi)容主要講解“golang如何將通道關(guān)閉”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“golang如何將通道關(guān)閉”吧!
10年積累的成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有巴里坤哈薩克免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
在golang中,可以使用close()函數(shù)來(lái)關(guān)閉通道,語(yǔ)法“close(msg_chan)”。 通道(chan)是一種系統(tǒng)資源,因此在不需要使用chan 時(shí),需要使用內(nèi)置函數(shù)close來(lái)手動(dòng)關(guān)閉管道。注如果向一個(gè)已經(jīng)關(guān)閉的管道發(fā)送數(shù)據(jù),那么程序會(huì)pannic。
Go 語(yǔ)言 中的 通道(chan) 也是一種系統(tǒng)資源,因此,我們不需要使用 chan 時(shí),需要手動(dòng)關(guān)閉管道。關(guān)閉管道,需要使用系統(tǒng)內(nèi)置的 close 函數(shù)。
close()是一個(gè)內(nèi)置函數(shù),并設(shè)置一個(gè)標(biāo)識(shí),表示不再有任何值將發(fā)送到該通道。
close(msg_chan)
參數(shù) | 描述 |
---|---|
msg_chan | 需要關(guān)閉的管道。 |
您也可以使用for范圍循環(huán)關(guān)閉通道。在這里,接收器goroutine可以借助給定的語(yǔ)法檢查通道是打開(kāi)還是關(guān)閉:
ele, ok:= <- Mychannel
在此,如果ok的值為true,則表示通道已打開(kāi),因此可以執(zhí)行讀取操作。并且,如果的值為false,則表示該通道已關(guān)閉,因此將不執(zhí)行讀取操作。
說(shuō)明
我們?cè)谑褂?變量 接受管道返回的數(shù)據(jù)后,第二個(gè) bool 類型的返回值表示管道是否關(guān)閉,如果為 false,則表明管道已經(jīng)關(guān)閉。
關(guān)閉通道的示例
//Go程序說(shuō)明如何
//關(guān)閉使用的通道
//range循環(huán)和關(guān)閉函數(shù)
package main
import "fmt"
func myfun(mychnl chan string) {
for v := 0; v < 4; v++ {
mychnl <- "nhooo"
}
close(mychnl)
}
func main() {
//創(chuàng)建通道
c := make(chan string)
// 使用 Goroutine
go myfun(c)
//當(dāng)ok的值為為true時(shí),表示通道已打開(kāi),可以發(fā)送或接收數(shù)據(jù)
//當(dāng)ok的值設(shè)置為false時(shí),表示通道已關(guān)閉
for {
res, ok := <-c
if ok == false {
fmt.Println("通道關(guān)閉 ", ok)
break
}
fmt.Println("通道打開(kāi) ", res, ok)
}
}
向已經(jīng)關(guān)閉的管道發(fā)送數(shù)據(jù),程序會(huì) pannic
package main
import "fmt"
func main() {
fmt.Println("嗨客網(wǎng)(www.haicoder.net)")
ch := make(chan string, 5)
ch <- "Hello"
ch <- "HaiCoder"
ch <- "Python"
close(ch)
ch <- "Close"
}
關(guān)閉管道之后,我們?cè)俅问褂藐P(guān)閉的管道發(fā)送了一條 “Close” 消息,運(yùn)行程序后,我們看到程序 pannic,即,關(guān)閉的管道不可以再次發(fā)送數(shù)據(jù),否則,程序會(huì) pannic。
到此,相信大家對(duì)“golang如何將通道關(guān)閉”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
文章題目:golang如何將通道關(guān)閉
當(dāng)前網(wǎng)址:http://aaarwkj.com/article10/igshdo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、品牌網(wǎng)站制作、全網(wǎng)營(yíng)銷推廣、定制網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、域名注冊(cè)
聲明:本網(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)