您好,登錄后才能下訂單哦!
本篇內容主要講解“golang如何將通道關閉”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“golang如何將通道關閉”吧!
在golang中,可以使用close()函數來關閉通道,語法“close(msg_chan)”。 通道(chan)是一種系統資源,因此在不需要使用chan 時,需要使用內置函數close來手動關閉管道。注如果向一個已經關閉的管道發送數據,那么程序會pannic。
Go 語言 中的 通道(chan) 也是一種系統資源,因此,我們不需要使用 chan 時,需要手動關閉管道。關閉管道,需要使用系統內置的 close 函數。
close()是一個內置函數,并設置一個標識,表示不再有任何值將發送到該通道。
close(msg_chan)
參數 | 描述 |
---|---|
msg_chan | 需要關閉的管道。 |
您也可以使用for范圍循環關閉通道。在這里,接收器goroutine可以借助給定的語法檢查通道是打開還是關閉:
ele, ok:= <- Mychannel
在此,如果ok的值為true,則表示通道已打開,因此可以執行讀取操作。并且,如果的值為false,則表示該通道已關閉,因此將不執行讀取操作。
說明
我們在使用 變量 接受管道返回的數據后,第二個 bool 類型的返回值表示管道是否關閉,如果為 false,則表明管道已經關閉。
關閉通道的示例
//Go程序說明如何
//關閉使用的通道
//range循環和關閉函數
package main
import "fmt"
func myfun(mychnl chan string) {
for v := 0; v < 4; v++ {
mychnl <- "nhooo"
}
close(mychnl)
}
func main() {
//創建通道
c := make(chan string)
// 使用 Goroutine
go myfun(c)
//當ok的值為為true時,表示通道已打開,可以發送或接收數據
//當ok的值設置為false時,表示通道已關閉
for {
res, ok := <-c
if ok == false {
fmt.Println("通道關閉 ", ok)
break
}
fmt.Println("通道打開 ", res, ok)
}
}
向已經關閉的管道發送數據,程序會 pannic
package main
import "fmt"
func main() {
fmt.Println("嗨客網(www.haicoder.net)")
ch := make(chan string, 5)
ch <- "Hello"
ch <- "HaiCoder"
ch <- "Python"
close(ch)
ch <- "Close"
}
關閉管道之后,我們再次使用關閉的管道發送了一條 “Close” 消息,運行程序后,我們看到程序 pannic,即,關閉的管道不可以再次發送數據,否則,程序會 pannic。
到此,相信大家對“golang如何將通道關閉”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。