当前位置: 首页 > news >正文

如何查询网站建设时间wordpress 框架解析

如何查询网站建设时间,wordpress 框架解析,wordpress采集网页文章,做微课的网站前言 本文是探讨的是在Go语言中#xff0c;我们是否可以使用读取管道时的第二个返回值来判断管道是否关闭? 样例 在Go语言中#xff0c;我们是否可以使用读取管道时的第二个返回值来判断管道是否关闭? 可以看下面的代码 package mainimport fmt在Go语言中我们是否可以使用读取管道时的第二个返回值来判断管道是否关闭? 样例 在Go语言中我们是否可以使用读取管道时的第二个返回值来判断管道是否关闭? 可以看下面的代码 package mainimport fmtfunc main() {// 创建一个整型管道ch : make(chan int)// 启动一个协程往管道发送数据go func() {for i : 0; i 5; i {ch - i}// 关闭管道close(ch)}()// 能否判断管道是否关闭?if _, ok : -ch; !ok {fmt.Println(管道已关闭)} }探讨 管道的数据结构 在探讨这个问题之前,我们先来了解一下管道的数据结构,从go的源码,我们可以知道,管道是被定义为一个名为hchan的结构体 type hchan struct {qcount uint //当前队列中剩余的元素个数dataqsiz uint // 环形队列管道容积buf unsafe.Pointer // 环形队列指针elemsize uint16 // 元素大小closed uint32 // 标识管道关闭的状态elemtype *_type // 元素类型recvq waitq // 等待的读元素的协程队列sendq waitq // 等待的写元素的协程队列... } 其中,有一个属性是我们应该关注的,那就是closed,这玩意标识了管道是否关闭,这玩意为1代表关闭了,为0代表是开启的. 详细分析 好的,接下来我们继续本文探讨的问题在Go语言中我们是否可以使用管道的第二个返回值来判断管道是否关闭? 先给出结论 : 从严格意义上来讲是不可以的,其实表示是否成功读取数据,但是在缓存区为0的时候,ok的状态和管道状态是一致的,所以会被误认为,这个ok是代表管道的状态 可以看下面的例子 package mainimport (fmttime )func main() {a2 : make(chan int, 2)go demo(a2)value2, ok2 : -a2fmt.Printf(value2:%v,ok2:%v\n, value2, ok2)time.Sleep(3 * time.Second)value3, ok3 : -a2fmt.Printf(value3:%v,ok3:%v\n, value3, ok3)}func demo(a chan int) {defer func() {close(a)fmt.Println(管道已经关闭)}()a - 1a - 2 }解释一下运行流程 首先创建了一个缓存区为2的管道a2然后用go关键字 将demo函数开辟出一个新的协程运行,此时demo和main是同一级的关系,同时运行,此时main函数会继续向下执行,发现是从管道中读取一个元素,然后就会等待demo函数会向管道中传入值,demo函数的运行过程是这样的,它发现管道a2的缓存是2,所以刚好把元素存入,然后就执行关闭管道,然后demo协程销毁main函数继续执行,接收到a2管道的一个元素之后,然后返回value2和ok2,然后进行打印然后休眠3秒钟然后继续读取a2管道的元素,得到value3和ok3,然后打印 ok2和ok3都为true ’ 管道已经关闭 ’ 这是最先打印的,无论运行多少次,都是一样的,而且我还特地将main函数暂停了3秒,所以我可以保证demo函数已经执行完毕,demo协程已经销毁,然后再执行的第二个管道的数据的读取 逐步调试 那我们调试一下,可以发现,执行了make函数创建管道之后,管道没有关闭,我前面特意提了管道的数据结构,其中closed是标识管道是否关闭的 继续调试,我们可以发现,在读取完管道a2的第一个值赋值给value2和ok2的时候,此时通道已经关闭 value2的值为1,ok2为true 继续调试,通道还是关闭状态,但是ok3的值还是true,看下面的第二张图 所以读取管道元素传来的第二个值,并不是代表管道是否关闭! 那它代表什么? 其实是代表读取数据是否成功,或者说代表缓存区是否还有数据 首先我们要知道, 关闭了的管道, 我们还是可以进行读取的, 这个设定是因为有缓存的存在, 但是如果管道关闭了的话,又没有值,读取的话,会是类型的默认值和false,也就是读取未成功 当然如果是缓存区为0的情况,ok的值和管道的状态是一致的 var c make(chan int) close(c) value, ok : -c fmt.Printf(value:%v \nok:%v \n, value, ok)运行结果:
http://www.w-s-a.com/news/20286/

相关文章:

  • 网站建设年终总结网站建设公司顺义
  • 网页给别人做的 网站后续收费吗获取更多付费流量
  • 金融交易网站建设金融 网站建设
  • 长沙网站建设联系电话怎么做表格
  • 网站怎么做域名实名认证龙华网站 建设信科网络
  • 企业网站规划方案网站是做排行榜
  • 万维网网站个人申请网站
  • 我想做网站怎么做昆山网站建设 全是乱码
  • 单位做网站怎么做圣诞树html网页代码
  • 网页开发与网站开发企业网站托管服务常用指南
  • 一站式服务图片临沂做进销存网站
  • 鸣蝉智能建站标准物质网站建设模板
  • 电商网站建设技术员的工作职责商业网站制作价格
  • 网站html模板免费下载公司的网站建设费用入什么科目
  • 高中生做网站网页网页制作教程零基础学会
  • 做金融网站有哪些要求WordPress站内搜索代码
  • 济南网站怎么做seowordpress注册发邮件
  • 珠海网站设计平台东莞市手机网站建设平台
  • 网站开发文档合同怎么在wordpress导航条下方加入文字广告链接
  • 网站建设需怎么做有网站怎么做企业邮箱
  • 网站制作流程视频教程小程序多少钱一年
  • 暗网是什么网站花都网站建设哪家好
  • 贵州网站开发流程晋江论坛手机版
  • 网站建设丿金手指谷哥14阿里巴巴官网电脑版
  • 网站开发招聘信息匿名ip访问网站受限
  • 网站转app工具网站规划建设与管理维护大作业
  • flash是怎么做网站的.net购物网站开发
  • 烟台网站建设求职简历品质商城网站建设
  • 做百度外链哪些网站权重高点做网站具备的条件
  • 怎么样用ppt做网站红番茄 网站点评