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

贵州省建设学校官方网站wordpress 轮播图插件下载

贵州省建设学校官方网站,wordpress 轮播图插件下载,一个网站做十个二级域名,汉川网站开发🌈Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 📗概念 select 语句是 Go 的一种控制结构,用于等待多个通道操作。它类似于 s…

挪威特罗姆瑟夜景

🌈Don’t worry , just coding!
内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。

📗概念

select 语句是 Go 的一种控制结构,用于等待多个通道操作。它类似于 switch 语句,但用于通道的接收和发送

超时是指在一定时间内未能完成某项操作(如接收通道消息或发送消息),从而采取某种措施(如执行默认操作或返回错误)

非阻塞通道操作是指通过 select 语句的 default 分支,或者直接在通道操作中,尝试发送或接收数据而不会导致 goroutine 阻塞。

💻代码

通道select

package mainimport ("fmt""time"
)func main() {c1 := make(chan string) // 创建一个字符串类型的通道 c1c2 := make(chan string) // 创建一个字符串类型的通道 c2// 启动第一个 goroutinego func() {time.Sleep(1 * time.Second) // 暂停 1 秒c1 <- "one"                 // 向 c1 通道发送消息 "one"}()// 启动第二个 goroutinego func() {time.Sleep(2 * time.Second) // 暂停 2 秒c2 <- "two"                 // 向 c2 通道发送消息 "two"}()// 循环接收消息for i := 0; i < 2; i++ {select {case msg1 := <-c1: // 从 c1 通道接收消息fmt.Println("received", msg1) // 打印接收到的消息case msg2 := <-c2: // 从 c2 通道接收消息fmt.Println("received", msg2) // 打印接收到的消息}}
}//输出
//启动等待一秒后打印 received one
//启动等待2秒后打印 received two,因为两个等待是同时执行的,所以总执行时间是2秒

通道timeout

package mainimport ("fmt""time"
)func main() {c1 := make(chan string, 1) // 创建一个缓冲通道 c1,容量为 1go func() {time.Sleep(2 * time.Second) // 暂停 2 秒c1 <- "result 1"            // 向 c1 通道发送 "result 1"}()// 第一个 select 语句select {case res := <-c1: // 尝试从 c1 接收消息fmt.Println(res) // 打印接收到的消息case <-time.After(1 * time.Second): // 如果 1 秒后还没有消息,则执行此 casefmt.Println("timeout 1") // 打印超时消息}c2 := make(chan string, 1) // 创建另一个缓冲通道 c2,容量为 1go func() {time.Sleep(2 * time.Second) // 暂停 2 秒c2 <- "result 2"            // 向 c2 通道发送 "result 2"}()// 第二个 select 语句select {case res := <-c2: // 尝试从 c2 接收消息fmt.Println(res) // 打印接收到的消息case <-time.After(3 * time.Second): // 如果 3 秒后还没有消息,则执行此 casefmt.Println("timeout 2") // 打印超时消息}
}
//输出
//timeout 1
//result 2

Non-Blocking Channel Operations非阻塞通道操作

package mainimport "fmt"func main() {messages := make(chan string) // 创建一个字符串类型的通道 messagessignals := make(chan bool)    // 创建一个布尔类型的通道 signals// 第一个 select 语句select {case msg := <-messages: // 尝试从 messages 通道接收消息fmt.Println("received message", msg)default: // 如果没有消息可接收,则执行此分支fmt.Println("no message received")}msg := "hi" // 定义消息内容// 第二个 select 语句select {case messages <- msg: // 尝试向 messages 通道发送消息fmt.Println("sent message", msg)default: // 如果通道满或没有接收者,则执行此分支fmt.Println("no message sent")}// 第三个 select 语句select {case msg := <-messages: // 尝试从 messages 通道接收消息fmt.Println("received message", msg)case sig := <-signals: // 尝试从 signals 通道接收信号,这里是bool类型的通道,并没有消息发送进来fmt.Println("received signal", sig)default: // 如果没有消息或信号可接收,则执行此分支fmt.Println("no activity")}
}//输出
//no message received
//no message sent
//no activity
  • 通道可以用 select 语句来处理消息和信号。
  • select 语句的 default 分支允许在没有可用通道操作时执行其他逻辑,避免了阻塞。

🔍理解

  • select 语句可以有效地等待多个通道的操作,确保程序能够及时响应来自不同通道的消息
  • 通过使用 time.Sleep 模拟耗时操作,可以并发执行的特性。
  • time.After 用于设置超时机制,确保程序不会无限期等待通道的消息。
  • select 语句的 default 分支允许在没有可用通道操作时执行其他逻辑,避免了阻塞。

💪无人扶我青云志,我自踏雪至山巅。
在这里插入图片描述

http://www.yayakq.cn/news/605140/

相关文章:

  • 怎么看一个网站做的好不好沈阳的网站建设
  • 瑞安自适应网站建设制作网页需要什么技术
  • 网站分辨率做多大宝安区城市建设局网站
  • logo设计免费网址泉州百度网站快速优化
  • 徐州有哪些网站制作公司网站策划表
  • 泉州那家做网站公司好院感质控中心网站建设 申请
  • 扒wordpress站广州seo工资
  • 网站建设源码修改安徽建设厅网站地址
  • 深圳婚纱摄影网站建设wordpress 图片点击放大
  • 成功网站建设案例手机app制作视频教程
  • 徐州网站备案重庆市工程建设信息
  • 在那里能找到网站flash网站作品欣赏
  • 绵阳市住房 和城乡建设局网站温岭市住房和城乡建设局网站
  • 互联网网站设计怎么介绍自己做的网站
  • 昆明专业建站html登录注册页面模板
  • 凉山网站开发有网站建设需求的网站
  • 一个公司做网站需要注意什么辽宁建设工程信息网招标公告桓仁金山热电厂防水工程
  • 点击立即进入正能量网站wordpress cos腾讯云
  • 网站名称格式知名商业网站有哪些
  • wordpress软件网站模板百度搜索到自己的网站
  • 鸿鑫建设集团有限公司网站秦皇岛建设工程信息网站
  • 网页制作模板的网站安卓aso优化工具
  • 中国购物网站排名上海网站开发哪里有
  • vs2012怎么做网站广州兼职网网站建设
  • 互联网公司响应式网站网站推广营销活动
  • 做网站编辑需要经验吗网站没有ftp 怎么推广
  • wordpress 站点管理员什么是网络营销的概率
  • 网站建设分为哪几个阶段网上商城网站建设
  • 网站开发参考文献格式企业网站建设报价表
  • php做网站模板校园二手市场网站建设方案