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

网站图片计时器怎么做赤峰市做网站建设的公司

网站图片计时器怎么做,赤峰市做网站建设的公司,东莞智通人才网最新招聘信息,wordpress有趣插件通道#xff08;channel#xff09; 1. 声明2. channel的操作3. 无缓冲通道4. 有缓冲通道5. 如何优雅的从通道循环取值6. 单向通道7. 异常总结 上一篇#xff1a;结构体 Go语言的并发模式#xff1a;不要通过共享内存来通信#xff0c;而应该通过通信来共享内存。 Go语言… 通道channel 1. 声明2. channel的操作3. 无缓冲通道4. 有缓冲通道5. 如何优雅的从通道循环取值6. 单向通道7. 异常总结 上一篇结构体 Go语言的并发模式不要通过共享内存来通信而应该通过通信来共享内存。 Go语言的通道channel是一种特殊类型遵循先进先出FIFO的原则声明channel时需要指定元素类型。 channel是一种通信机制用于在不同的goroutine之间传递数据。 1. 声明 channel 是一种引用类型空值是 nil。声明后的 channel 变量是未初始化的需要使用make函数初始化。 声明channelvar 变量 chan 元素类型创建channelch : make(chan 元素类型, 缓冲大小) 元素类型通道中存放的数据类型。 package mainimport fmtfunc main() {// 声明var ch chan intfmt.Println(ch) // nil// 初始化ch make(chan int, 3) }2. channel的操作 操作符-发送sendch - 元素值接收receive元素值 : -ch关闭closeclose(ch) package mainimport fmtfunc main() {ch : make(chan int, 3)ch - 1 // 把 1 发送到 chch - 2ch - 3//ch - 4 // 超出缓冲大小fatal error: all goroutines are asleep - deadlock!i : -ch // 从 ch 接收一个值并赋值给 ifmt.Println(i)-ch // 从 ch 接收一个值并丢弃-chj, ok : -ch // 通道未关闭且无元素值则堵塞fatal error: all goroutines are asleep - deadlock!fmt.Printf(i %d, j %d, ok %v\n, i, j, ok)ch - 4close(ch) // 关闭通道 ch//ch - 5 // 通道关闭后不可再发送panic: send on closed channelk, ok : -ch // 通道关闭后若通道内还有值接收依然可以接收通道中的元素。fmt.Printf(k %d, ok %v\n, k, ok)m, ok : -ch // 通道关闭且无元值得到对应类型的零值。ok为false说明通道已没有元素值可取了fmt.Printf(k %d, ok %v\n, m, ok) }关闭后的通道具有以下特点 通道关闭后发送操作引发 panic。 通道关闭后若通道内还有值接收操作依然可以接收通道中的元素。 通道关闭且没有值接收操作会得到对应类型的零值。接收表达式可接收两个值第一个值为接收到的元素值第二个值为bool类型如果为false则说明通道已没有元素值可取了且通道已关闭。 注若通道未关闭且无元素值接收操作堵塞。 关闭一个已关闭的通道会引发panic。 3. 无缓冲通道 又称为堵塞通道。无论send还是receive一开始执行就会被堵塞直到配对的操作也开始执行才会继续传递。 同步方式传递数据使用无缓冲通道进行通信将导致发送和接收的goroutine同步化。因此无缓冲通道也被称为同步通道。 package mainimport fmtfunc main() {ch : make(chan int)go func(c chan int) {ret : -cfmt.Println(接收成功, ret)}(ch)ch - 10fmt.Println(发送成功) }4. 有缓冲通道 只要通道的容量大于零那么该通道就是有缓冲的通道通道的容量表示通道中能存放元素的数量。 获取通道内元素数量len(ch) 获取通道的容量cap(ch) func main() {ch : make(chan int, 10) // 创建一个容量为1的有缓冲区通道ch - 10fmt.Println(发送成功) }异步方式传递数据 5. 如何优雅的从通道循环取值 通过channel发送有限数据时可以通过close函数关闭通道来告诉通道接收值的goroutine停止等待。 package mainimport fmtfunc main() {ch1 : make(chan int)ch2 : make(chan int)// goroutinego func() {for i : 0; i 100; i {ch1 - i}close(ch1)}()go func() {for {i, ok : -ch1 if !ok { // ok为false表面通道已关闭且没有元素值可取了break}ch2 - i * i}close(ch2)}()// 主goroutinefor i : range ch2 { // 通道关闭后会退出for range循环fmt.Println(i)} } 6. 单向通道 有的时候我们会将通道作为参数在多个任务函数间传递很多时候我们在不同的任务函数中使用通道都会对其进行限制比如限制通道在函数中只能发送或只能接收。 Go语言中提供了单向通道来处理这种情况。例如我们把上面的例子改造如下 package mainimport fmtfunc counter(out chan- int) { // 限制out仅为发送通道for i : 0; i 100; i {out - i}close(out) }func squarer(out chan- int, in -chan int) {for i : range in {out - i * i}close(out) }func printer(in -chan int) { // in限制为接收通道for i : range in {fmt.Println(i)} }func main() {ch1 : make(chan int)ch2 : make(chan int)go counter(ch1) // GO语言会自动把双向通道转换为函数所需要的单向通道go squarer(ch2, ch1)printer(ch2) } 7. 异常总结
http://www.w-s-a.com/news/661823/

相关文章:

  • 小型网站搭建logo免费制作
  • dede 网站模板哈尔滨房产信息网官方网站
  • 设计师个人作品集模板班级优化大师网页版登录
  • 高端网站建设教学网站开发前期准备工作
  • 网站评论列表模板设计官网的
  • 怎么做可以访问网站ui设计自学学的出来吗
  • 网站如何接入支付宝软件开发工作内容描述
  • 廊坊网站建设搭建整合营销传播的效果表现为
  • 网站服务器在本地是指园林绿化
  • 公司网站建设需要什么科目网站代运营价格
  • 网站建设前的ER图ppt模板图片 背景
  • 做一个网站花多少钱网站导航营销步骤
  • 仙桃网站定制做房产网站能赚钱吗
  • 西安网站制作模板最新源码
  • 南京江宁网站建设大学高校网站建设栏目
  • 模板网站建设明细报价表做网站第一
  • 公司网站建设系统软件开发 上海
  • 怎么让公司建设网站固安县建设局网站
  • 360免费建站官网入口手机网站建设设计
  • 商城网站建站系统dw如何做网页
  • 网站建设的公司收费我有网站 怎么做淘宝推广的
  • 网站建设策划书事物选题手机兼职app
  • html5 微网站模版wordpress博客速度很慢
  • 怎么做五个页面网站网络推广如何收费
  • 上虞宇普电器网站建设江西建筑人才网
  • 在吗做网站商城一个网站需要服务器吗
  • 先做网站再备案吗中山微网站建设报价
  • 树莓派可以做网站的服务器吗网站建设与设计ppt
  • 网站访问速度分析网站怎么做让PC和手机自动识别
  • 网站建设要考西宁网站建设多少钱