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

南京网站工作室深圳市住房和建设局人事调整

南京网站工作室,深圳市住房和建设局人事调整,餐饮公司做网站好处,什么类型的网站好做#x1f308;Don’t worry , just coding! 内耗与overthinking只会削弱你的精力#xff0c;虚度你的光阴#xff0c;每天迈出一小步#xff0c;回头时发现已经走了很远。 #x1f4d7;概念 select 语句是 Go 的一种控制结构#xff0c;用于等待多个通道操作。它类似于 s… Don’t worry , just coding! 内耗与overthinking只会削弱你的精力虚度你的光阴每天迈出一小步回头时发现已经走了很远。 概念 select 语句是 Go 的一种控制结构用于等待多个通道操作。它类似于 switch 语句但用于通道的接收和发送 超时是指在一定时间内未能完成某项操作如接收通道消息或发送消息从而采取某种措施如执行默认操作或返回错误 非阻塞通道操作是指通过 select 语句的 default 分支或者直接在通道操作中尝试发送或接收数据而不会导致 goroutine 阻塞。 代码 通道select package mainimport (fmttime )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 (fmttime )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 2Non-Blocking Channel Operations非阻塞通道操作 package mainimport fmtfunc 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.dnsts.com.cn/news/218909.html

相关文章:

  • 手工艺品网站建设方案高明做网站
  • 企业门户网站模板html昆明网站搭建网站运营
  • 网站后台示演php做的大型网站有哪些
  • 网站设计要注意事项网站logo设计标准
  • 网站建设常见故障制作简历哪个网站好
  • wordpress 推荐文章营口网站优化
  • 福建漳州建设局网站wordpress扒站
  • 智能网站平台集宁建设局网站
  • 电子商务网站开发的过程wordpress博客 登录
  • 模具钢东莞网站建设安全联盟网站认证
  • 设计公司企业标语成都网站排名优化开发
  • 塑胶加工东莞网站建设技术支持网站文章更新要求
  • 长宁企业网站制作怎么去推广一个app
  • 2003总是说网站建设中泰安公司
  • 网站备案拍照要求怎样搭建一个个人网站
  • 本机做网站桥梁建设杂志有假网站吗
  • app网站设计制作扬州市城市建设监察支队网站
  • 什么网站可以做设计赚钱吗建一个个人网站
  • 万网网站需要的步骤创造软件的软件下载
  • 淘客网站免费开源源码国家建设部网站
  • 怎么创造一个网站琼海建设网站
  • 沈阳网站托管公司网上国网注册推广有多少钱
  • 怎么做卡盟网站惠州app网站建设排行榜
  • 电商网站建设效果广东莞建建设工程有限公司
  • 网站开发框架图网站建设外包价格
  • 搭建网站一条龙页面设计的宗旨是什么
  • 一般做网站用什么字体广告公司可以做网站吗
  • 襄樊最好网站建设价格电影网站建设策划书
  • 个人网站可以做社交类型app下载赚钱
  • 青岛网站建设莫道网络网站建设忄金手指专业