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

做视频网站用哪个cms营销软件网站

做视频网站用哪个cms,营销软件网站,如何免费制作小程序,中国城乡建设网Go 语言学习笔记之通道 Channel 大家好,我是码农先森。 概念 Go 语言中的通道(channel)是用来在 Go 协程之间传递数据的一种通信机制。 通道可以避免多个协程直接共享内存,避免数据竞争和锁的使用,从而简化了并发程…

Go 语言学习笔记之通道 Channel

大家好,我是码农先森。

概念

Go 语言中的通道(channel)是用来在 Go 协程之间传递数据的一种通信机制。

通道可以避免多个协程直接共享内存,避免数据竞争和锁的使用,从而简化了并发程序的实现。

通道有以下特点:

  • 通过 make 函数创建,指定通道中传输的数据类型。
  • 如果指定通道容量,则在发送数据时不会阻塞执行。
  • 通道可以是单向或双向的,用于限制通道的发送或接收操作。
  • 使用 <- 操作符来发送和接收数据。
  • 发送数据时会阻塞直到有协程接收数据,接收数据时也会阻塞直到有协程发送数据。
  • 可以使用 close 函数关闭通道,通知接收方数据已经发送完成。
  • 通道可以用于实现数据同步和协程之间的协作。

select 语句

select 语句是专门为通道而设计的,它可以包含若干个候选分支,每个分支中的 case 表达式都会包含针对某个通道的发送或接收操作。

select 语句被执行时,它会根据一套分支选择规则选中某一个分支并执行其中的代码。

如果所有的候选分支都没有被选中,那么默认分支就会被执行。注意,发送和接收操作的阻塞是分支选择规则的一个很重要的依据。

通道用法

普通用法

创建一个通道 ch,用于传输整数类型的数据。然后启动一个协程向通道发送数据,发送完毕后关闭通道。

主协程通过 range 循环从通道接收数据,并打印出接收到的数据。当通道被关闭后,循环会结束。

package mainimport "fmt"func main() {// 创建一个通道,用于传输整数类型的数据ch := make(chan int)// 启动一个协程向通道发送数据go func() {for i := 1; i <= 5; i++ {ch <- i // 发送数据到通道}close(ch) // 关闭通道}()// 主协程从通道接收数据for num := range ch {fmt.Println("Received:", num)}
}

结合 Select 语句

创建两个通道 ch1ch2,分别用于传输字符串类型的数据。然后启动两个协程,一个向 ch1 发送 Hello 消息,另一个向 ch2 发送 World 消息,发送间隔分别为 1 秒和 2 秒。

主协程通过 select 不断监听 ch1ch2,一旦其中一个通道有数据就绪,就执行相应的代码块打印接收到的消息。通过 select,我们可以同时处理多个通道的数据交互

package mainimport ("fmt""time"
)func main() {ch1 := make(chan string)ch2 := make(chan string)// 协程1,每隔1秒向 ch1 发送 "Hello"go func() {for {time.Sleep(1 * time.Second)ch1 <- "Hello"}}()// 协程2,每隔2秒向 ch2 发送 "World"go func() {for {time.Sleep(2 * time.Second)ch2 <- "World"}}()// 主协程通过 select 从 ch1 和 ch2 中接收数据for {select {case msg1 := <-ch1:fmt.Println("From ch1:", msg1)case msg2 := <-ch2:fmt.Println("From ch2:", msg2)}}
}

总结

一个通道相当于一个先进先出FIFO的队列。通道中的各个元素值都是严格地按照发送的顺序排列的,先被发送通道的元素值一定会先被接收。元素值的发送和接收都需要用到操作符 <-

通道避免了多个协程直接共享内存而导致的数据竞争问题,保证了数据的并发安全。通道让不同协程之间可以通过数据传递进行通信,而不用直接关心对方的具体实现细节。

欢迎关注、分享、点赞、收藏、在看,我是微信公众号「码农先森」作者。

http://www.dinnco.com/news/26080.html

相关文章:

  • 中国石家庄网站黄冈地区免费网站推广平台
  • 鞍山网站开发百度关键词优化服务
  • 廊坊cms模板建站站长工具综合查询2020
  • 网站建设设计 飞沐广州seo优化公司排名
  • javaweb做网站实现邮件网络推广公司企业
  • 微动网站建设网络营销推广方案范文
  • 如何办个网站东莞关键词优化推广
  • 金融行业网站模板重庆seo排名优化费用
  • 最新疫情防控措施站长工具seo
  • 永安网页设计郑州网站优化推广
  • 成都网站建设常见问题品牌网络营销策划书
  • ipad可以做网站吗长沙seo管理
  • 广西南宁网站建设百度云资源共享
  • 长沙网站制作哪家专业链接转二维码
  • 租赁公司网站源码站长统计app软件下载2021
  • 企业加强网站建设的必要性流量精灵app
  • wordpress链接样式设置方法北京seo关键词优化收费
  • 网站开发用什么系统比较好?今日新闻网
  • 网站建设运行维护合同海淀搜索引擎优化seo
  • 美工做任务网站我是站长网
  • 自己的网站怎么做淘宝联盟下载百度到桌面上
  • 江门企业免费建站近期出现的病毒叫什么
  • html5 电商网站模板免费b站推广软件
  • 网站还未被收录可以做推广吗石家庄网站建设方案推广
  • 建筑工程网络进度计划备注填写范例seo按照搜索引擎的什么对网站
  • 用流媒体做的电台网站谷歌seo快速排名软件首页
  • 手机上可建网站做淘宝客吗国产长尾关键词拘挖掘
  • 关于网站设计的新闻百度站长提交
  • 防城港网络推广谷歌优化方法
  • 做网站是用c 吗企业建站要多少钱