Go语言chan关闭教程
中的 也是一种系统资源,因此,我们不需要使用 chan 时,需要手动关闭管道。关闭管道,需要使用系统内置的 close 。
如果,我们向一个已经关闭的管道发送数据,那么程序会 。
Go语言chan关闭
语法
close(msg_chan)
参数
参数 | 描述 |
---|---|
msg_chan | 需要关闭的管道。 |
说明
当我们的管道,不需要使用时,需要使用 close 关闭该管道。
Go语言chan是否关闭
语法
msg, ok := <- msg_chan
说明
我们在使用 接受管道返回的数据后,第二个 类型的返回值表示管道是否关闭,如果为 false,则表明管道已经关闭。
案例
Go语言chan关闭
管道不再使用时,使用 close 关闭管道
package main import "fmt" func main() { fmt.Println("嗨客网(www.haicoder.net)") ch := make(chan string, 5) ch <- "Hello" ch <- "HaiCoder" ch <- "Python" close(ch) for { if msg, ok := <-ch; ok == false{ fmt.Println("chan is closed") break }else{ fmt.Println("Msg =", msg) } } }
程序运行后,控制台输出如下:
chan string
最后,我们使用 不停的从管道接受数据,同时,使用管道返回的第二个变量 ok,来判断管道是否关闭,如果管道关闭,那么就使用 结束循环。
我们发现,我们的程序接受完所有的数据之后,输出了管道关闭的消息。
向关闭的chan发送
向已经关闭的管道发送数据,程序会 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" }
程序运行后,控制台输出如下:
chan string
关闭管道之后,我们再次使用关闭的管道发送了一条 “Close” 消息,运行程序后,我们看到程序 pannic,即,关闭的管道不可以再次发送数据,否则,程序会 pannic。
Go语言chan关闭总结
Go 语言中的 chan 也是一种系统资源,因此,我们不需要使用 chan 时,需要手动关闭管道。关闭管道,需要使用系统内置的 close 函数。
如果,我们向一个已经关闭的管道发送数据,那么程序会 pannic。Go 语言 chan 关闭语法:
close(msg_chan)