0

0

golang怎么将通道关闭

青灯夜游

青灯夜游

发布时间:2023-01-11 11:12:23

|

3082人浏览过

|

来源于php中文网

原创

在golang中,可以使用close()函数来关闭通道,语法“close(msg_chan)”。 通道(chan)是一种系统资源,因此在不需要使用chan 时,需要使用内置函数close来手动关闭管道。注如果向一个已经关闭的管道发送数据,那么程序会pannic。

golang怎么将通道关闭

本教程操作环境:windows7系统、GO 1.18版本、Dell G3电脑。

Go 语言 中的 通道(chan) 也是一种系统资源,因此,我们不需要使用 chan 时,需要手动关闭管道。关闭管道,需要使用系统内置的 close 函数。

close()是一个内置函数,并设置一个标识,表示不再有任何值将发送到该通道。

close(msg_chan)
参数 描述
msg_chan 需要关闭的管道。

您也可以使用for范围循环关闭通道。在这里,接收器goroutine可以借助给定的语法检查通道是打开还是关闭:

立即学习go语言免费学习笔记(深入)”;

ele, ok:= <- Mychannel

在此,如果ok的值为true,则表示通道已打开,因此可以执行读取操作。并且,如果的值为false,则表示该通道已关闭,因此将不执行读取操作。

说明

  • 我们在使用 变量 接受管道返回的数据后,第二个 bool 类型的返回值表示管道是否关闭,如果为 false,则表明管道已经关闭。

    易优管道疏通房屋补漏网站源码1.6.9
    易优管道疏通房屋补漏网站源码1.6.9

    易优管道疏通房屋补漏网站源码是基于易优cms开发,适合企业进行管道疏通房屋补漏登行业使用。程序内核为Thinkphp5.0开发,后台简洁,为企业网站而生。 这是一套安装就能建站的程序,不定期更新程序BUG,更新网站功能。 我们提供的不仅是模板这么简单,我们还提供程序相关咨询、协助安装等服务。 默认不包含小程序插件,需要另外单独购买插件。 模板安装步骤 1、请将

    下载

关闭通道的示例

//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)
    }
}

1.png

向已经关闭的管道发送数据,程序会 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"
}

2.png

关闭管道之后,我们再次使用关闭的管道发送了一条 “Close” 消息,运行程序后,我们看到程序 pannic,即,关闭的管道不可以再次发送数据,否则,程序会 pannic。

【相关推荐:Go视频教程编程教学

相关专题

更多
vlookup函数使用大全
vlookup函数使用大全

本专题整合了vlookup函数相关 教程,阅读专题下面的文章了解更多详细内容。

26

2025.12.30

金山文档相关教程
金山文档相关教程

本专题整合了金山文档相关教程,阅读专题下面的文章了解更多详细操作。

28

2025.12.30

PS反选快捷键
PS反选快捷键

本专题整合了ps反选快捷键介绍,阅读下面的文章找到答案。

25

2025.12.30

表格中一行两行的方法
表格中一行两行的方法

本专题整合了表格中一行两行的相关教程,阅读专题下面的文章了解更多详细内容。

3

2025.12.30

cpu温度过高解决方法大全
cpu温度过高解决方法大全

本专题整合了cpu温度过高相关教程,阅读专题下面的文章了解更多详细内容。

5

2025.12.30

ASCII码介绍
ASCII码介绍

本专题整合了ASCII码相关内容,阅读专题下面的文章了解更多详细内容。

31

2025.12.30

GPS是什么
GPS是什么

本专题整合了GPS相关内容,阅读专题下面的文章了解更多详细内容。

3

2025.12.30

wifi拒绝接入
wifi拒绝接入

本专题整合了wifi拒绝接入相关教程,阅读下面的文章了解更多详细方法。

9

2025.12.30

丰网速运介绍
丰网速运介绍

本专题整合了丰网速运查询入口以及相关内容,阅读专题下面的文章了解更多内容。

3

2025.12.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 0.6万人学习

Git 教程
Git 教程

共21课时 | 2.3万人学习

AngularJS教程
AngularJS教程

共24课时 | 2.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号