Go元素的关键字所在–chan通道

html validate是指html验证。它是通过与标准html规则进行比较的方式,分析html文档、标记出错误和非标准代码的处理过程。web页面使用html进行渲染,而html本身采用了html规范作为其规则和标准。通过验证html代码穿越多重浏览器标准!

chan

chan又称之为通道,形式类似于管道,内容从一头被送进去,从另一头被读取出来。下边来介绍定义通道的方法:

var 变量名 chan dataType

定义通道时,需要指定数据类型,就是只允许这个指定数据类型的变量通过这个通道。

初始化通道

golang中在初始化通道类型变量时,可以将通道分为两种情况,一种是带缓冲的通道,另一种是不带缓冲的通道。
下边来介绍下两种情况的初始化方法:

// 初始化不带缓冲的通道,通道中数据类型是intvar ch1 = make(chan int)// 初始化带10个缓冲的通道,通道中数据类型是stringvar ch2 = make(chan string,10)

还有一种写法是,定义并初始化通道,

// 定义通道,并给通道初始化8个缓冲ch3 := make(chan int ,8)// 定义通道,并初始化为不带缓冲通道ch4 := make(chan string)

通道赋值

对通道的读取和写入都可能进入阻塞状态。

不带缓冲的通道,在写入时,就会发生阻塞,直到通道中信息被读取后,才会结束阻塞。

带缓冲的通道,每次向通道中写入一次信息,通道长度就会加1,每成功从通道读取一次信息,通道长度减1。如果通道长度等于通道缓冲长度时,向通道继续写入信息会使程序阻塞;如果通道长度小于通道缓冲长度,则向通道中写入信息不会造成阻塞。假如通道长度是5,那么在通道没有被读取的情况下,向通道中第6次写入信息时才会导致程序阻塞。

通道写入的语法格式是:

var ch = make(chan string,10)// 将字符串”hello"写入到通道中,通道长度加1ch <- "hello"

读取通道

通道为空  1. 通道没有关闭,程序会进入阻塞状态,等到通道有信息写入  2. 通道已经关闭,不会阻塞,返回通道中数据类型初始值(脏数据),如通道是chan int时,返回值是0,通道是chan string时,返回值是空。  通道不为空  1. 通道没有关闭,从通道中读取一次信息,读取完成后,往下执行  2. 通道已被关闭,从通道中读取一次信信,读取完成后,往下执行

读取通道操作:

val,ok := <-ch

使用断言读取通道中的值,检查通道是否还有内容,以及判断通道是否已经关闭,当通道中没有信息,且通道已经关闭时,ok值为false,当通道没有关闭,但是通道中没有信息,程序将会阻塞,如果通道中有内容,则ok值是true。

另一种不使用断言的方式读取通道

val := <-ch

写入与读取通道

读取不带缓冲的通道示例方法:

package mainimport (    "fmt")func main() {    // 定义一个不带缓冲的通道,通道中数据类型是int    var c = make(chan int)    // 开启一个携程,读取通道中的内容    go func() {        fmt.Println("写入信息是:", <-c)    }()    // 向通道中写入数据    c <- 1}

输出结果:

写入信息是: 1

当对带缓冲的通道进行读写时,只要通道中数据长度不大于缓冲长度,就不会出现阻塞,但是读取带缓冲的通道,通道中没有内容时,程序依然会进入阻塞状态。所以,带缓冲的通道,只对写入产生影响。下边来一个示例:

package mainimport (    "fmt")func main() {    var c = make(chan int, 3)    c <- 1    c <- 2    c <- 3    //c <- 4    fmt.Println("end")}

输出信息是:

end

当向带3个缓冲的通道中写入内容时,由于只写入了3次,通道的长度刚好等于缓冲的长度,程序没有阻塞,当将 c

协程通信

通道类型变量的实质上是一个地址,如下边示例代码:

package mainimport (    "fmt")func main() {    var c = make(chan int, 3)    fmt.Println(c)}

输出结果:

0xc042072080

所以,当通道类型变量当做参数传入函数后,在函数中可以直接对通道中的值进行修改。虽然chan类型变量是一个地址,但是golang不允许使用取值操作符( * )来操作chan类型变量。但是如果你先对chan类型变量使用取地址操作符(&),然后再使用取值操作符(*),这种操作方法还是可以正常运行的,但是这意义不大,除非你的目的是在函数调用中,重新定义一个chan类型变量替换原来的变量。

chan的这些特性,可以很好的实现协程之间的同步功能。不带缓冲的通道,是一种零容忍的等待,可以实现强制同步;带缓冲的通道,是有一定量容忍度的等待,可以实现允许有一定时间差的同步。

简单的协程间通信例子:

package mainimport (    "fmt"    "time")func main() {    var c = make(chan int)    go func() {        fmt.Println("待命模式:")        // 读取通道时产生阻塞,等待其他协程向通道写入信息        fmt.Println("命令代码是:", <-c)    }()    go func() {        // 延时3秒,向通道中写入信息        time.Sleep(time.Second * 3)        fmt.Println("发送命令:")        c <- 8        close(c)    }()    time.Sleep(time.Second * 5)    fmt.Println("执行完成")}

输出信息是:

待命模式:发送命令:命令代码是: 8执行完成

  相关推荐:

HTML validate HTML验证_HTML/Xhtml_网页制作

HTML技巧汇编_CSS/HTML

以上就是Go元素的关键字所在–chan通道的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1547041.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月21日 18:46:15
下一篇 2025年12月21日 18:46:28

相关推荐

  • 前端开发中要如何注释语句?注释的三种方法(介绍)

    在前端开发中,往往为了一些原因(比如:代码说明,标注等等),需要用到注释语句。那么到底要怎样注释注释语句,注释语句的一些注意事项是什么?本章给大家带来前端开发中要如何注释语句?注释的三种方法(介绍)。有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 一、HTML 标签  1.定义: 注…

    2025年12月21日
    000
  • html5与传统html的区别,有哪些新增的和废除的元素?

    这篇文章围绕html展开,主要讲了html5与传统html的区别,以及一些html5新增的元素和废除的元素,有需要的小伙伴可以参考一下,希望对你有帮助。 一. HTML5语法的改变 该知识点所说变化指的是基于HTML4基础上所定义的改变,主要有如下: 1、HTML5的文件扩展符(.html或.htm…

    好文分享 2025年12月21日
    000
  • html中big标签如何使用?html big标签的使用实例

    html中的big标签的使用情况,big标签都知道是一个基础的放大标签,但是我们都在什么元素中加过big标签呢,今天这篇文章讲述了在几个元素中加big标签的详情,现在就开始阅读本篇文章吧 首先我们需要知道html big标签的使用说明: HTML big标签是定义比普通文本大一点的标签,我们在很多时…

    2025年12月21日
    000
  • HTML段落元素中怎么设置空格?HTML空格的设置总结

    html汇总的段落元素想要留点空格,但是直接打空格符号肯定是行不通的,因为浏览器只会显示一个空格,不管你点多少空格都是一样,但是今天的这个空格符 能或许能帮你这些忙,最后还有三个空格符的排名情况。让我们一起来看这篇文章吧 首先我们先看看html段落元素中是怎么设置空格的: 大家都知道在HTML一个段…

    2025年12月21日
    000
  • html中的锚点和页面跳转

    一、页面内跳转的锚点设置页面内的跳转需要两步:方法一:①:设置一个锚点链接去找喵星人;(注意:href属性的属性值最前面要加#)②:在页面中需要的位置设置锚点;(注意:a标签中要写一个name属性,属性值要与①中的href的属性值一样,不加#)标签中按需填写必要的文字,一般不写内容方法二:①:同方法…

    2025年12月21日
    000
  • 图片懒加载是什么意思?图片懒加载的实现方法

    本篇文章给大家带来的内容是关于图片懒加载是什么意思?图片懒加载的实现方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 所谓懒加载,是为了提高网页的打开的速度,获得更好用户体验的一种手段。其选择的重要的部分先加载,次要的部分需要的时候再加载。比如一个电商网站,首屏通常有很多的数据,…

    2025年12月21日
    000
  • 浏览器中5种常用的事件解析

    本篇文章给大家带来的内容是关于浏览器中常用的事件解析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 表单事件 键盘事件 当 , 的值发生变化时触发。此外,打开 contenteditable 属性的元素,只要值发生变化,也会触发 input 事件。input 事件的一个特点,就是会…

    好文分享 2025年12月21日
    000
  • 深入理解HTML中label的作用和使用方法(附代码)

    在工作中经常会用到表单布局,在表单布局中会遇到label标签,有很多新手在学习中可能会忽视了label标签,也有些人对label标签一知半解,那接下来就和大家聊聊label标签是什么意思?label标签什么用处? 在表单布局中会遇到label标签的使用,其实label没有任何样式效果,有触发对应表单…

    2025年12月21日
    000
  • html small标签的如何使用?HTML small标签的用法总结

    html中不使用css样式来使文本变小,很多人都忘了这一种元素,small标签它的功能就是能在大部分元素中使用,并让被small标签选中的文本比正常的文本小一个字号,这就是small标签,接下来我们看看下面这篇关于small标签使用实例的文章吧 首先我们来看一个HTML small标签使用的实例: …

    2025年12月21日
    000
  • html怎样设置背景颜色?HTML背景颜色代码详细分析

    本篇文章使用了html的代码和css样式的代码为大家展示了如何设置html的背景颜色,后面还有如何设置背景图片的介绍。希望对大家有所帮助,现在我们一起来看这篇文章吧 首先我们先来看看关于HTML设置背景颜色: 我们首先设置一个背景颜色,把背景颜色设在body标签中我们来看看效果: PHP中文网这是P…

    2025年12月21日 好文分享
    000
  • 一篇文章让你看懂HTML基本规则和网页结构

    如果你不致力于成为美工的话,那么作为开发人员,可以读懂html、必要时能进行简单修改即可。下面跟着我的思路,保证一篇文让你看懂html,当然,再看的过程中,最好自己动手试试,这样理解就更深了。 1、html基本规则 我的网页………………………..…………………. 几乎所有的网页都是按照这个格式来的,…

    好文分享 2025年12月21日
    000
  • HTML简单介绍

    本章给大家带来html简单介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 一、HTML是什么?         HTML语言用于描述网页    HTML是指超文本标记语言:Hyper Text Markup Language    HTML不是一种编程语言,而是一种标记语言,标…

    2025年12月21日
    000
  • css+html实现模拟百度首页(附代码)

    本篇文章给大家带来的内容是关于css+html实现模拟百度首页(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 代码如下: Title #biaoqian{ float: right; margin: 10px; } #d2,#d3,#d4,#d5,#d6,#d7,#d8,…

    2025年12月21日
    000
  • html input标签的属性有哪些?input标签的用法总结(附实例)

    本篇文章主要的向大家介绍了关于html input标签的属性,还有关于html input标签的具体的用法总结。让我们一起来看看html input标签有哪些用法吧 首先先来说说html input标签的属性: 1.type:该属性是input标签里唯一的必须输入的属性,当然,也可以不填,默认为ty…

    2025年12月21日
    000
  • html base标签怎么用?html base标签的用法总结

    本篇文章主要的讲述了关于html base标签的用法介绍,还有关于html base标签的具体用法实例解析,接下来就让我们一起来看这篇文章吧 首先我们先认识下html base标签: 标签为页面上的所有链接规定默认地址或默认目标。 通常情况下,浏览器会从当前文档的URL中提取相应的元素来填写相对UR…

    2025年12月21日
    000
  • html base标签有什么作用?base标签的作用分析(附实例)

    本篇文章主要的介绍了关于html base标签的用法介绍,还有关于html base标签的作用的分析,接下来就让我们一起来看这篇文章吧 首先我们先分析html base标签的作用: base标签是HTML语言中的基准网址标记,它是一个单标签,位于网页头部文件的head标签内,一个页面最多只能使用一个…

    好文分享 2025年12月21日
    000
  • 详谈HTML中script标签(附代码)

    本篇文章给大家带来的内容是关于详谈html中script标签(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 script 元素 在 HTML 页面中使用「Javascript」语言主要的方法就是使用 script 元素,script 元素内部的代码从上而下依次执行。 在引…

    好文分享 2025年12月21日
    000
  • 什么是html文件?html格式如何打开?(图)

    打开html的软件有:1、记事本;2、Adobe Dreamweaver软件;3、sublime text软件;4、notepad软件;5、vscode软件等等。 有时我们会遇到html格式的文件需要打开,那么什么是html格式?该怎么打开html格式的文件?这就需要我们知道什么是html格式的文件…

    2025年12月21日 好文分享
    000
  • html空格代码是什么?html空格代码怎么写?(总结)

    刚开始学习html的时候,会遇到一个这样的问题,html中空格怎么打?有的人可能就直接敲了一下空格键,但是这样是不正确的,毕竟敲的空格键不是一个代码,所以接下来本篇文章就来给大家介绍一下html中空格代码该怎么写。 在html中有五种空格的代码 html中空格代码的写法一:&nbsp(不换行…

    2025年12月21日 好文分享
    000
  • html怎么换行?换行代码是什么?九种html文字换行方法总结

    在用html写网页时,为了让网页中内容看起来整洁流畅,我们需要将其中的文字内容进行换行,那么,html怎么来换行呢?本篇文章就来给大家介绍一下html中给文字换行的方法。 html中换行的方法有很多,其中最为简单的就是利用标签,但是有时我们为了网页的设计,就需要灵活的运用各种不同的方法来实现文字的换…

    2025年12月21日
    000

发表回复

登录后才能评论
关注微信