GO——SELECT

参考:https://www.runoob.com/go/go-select-statement.html

select

  • 每个case都是一个通信,要么发送,要么接收
    • 除去defalut
  • 循环检测条件,如果满足就执行并结束,如果不满足就一直循环
    • default是默认的,如果在有default的情况下,前面的都不满足,那么这个select肯定就执行default,并结束
    • 没有default,且case都不满足,会阻塞,一直循环判断,直到有满足的
      • 如果有多个满足的,那么公平随机一个,其他忽略
package main

import (
	"fmt"
	"time"
)

func main() {
	a := make(chan int, 1)
	b := make(chan int, 1)
	go func() {
		for i := 0; i < 10; i++ {
			time.Sleep(1000)
			a <- i
		}
	}()

	go func() {
		for i := 0; i < 10; i++ {
			time.Sleep(2000)
			b <- i
		}
	}()

	for i := 0; i < 30; i++ {
		select {
		case v := <-a:
			fmt.Println("get a : ", v)
		case v := <-b:
			fmt.Println("get b : ", v)
		default:
			time.Sleep(1000)
			fmt.Println("223343")
		}

	}
}

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-30 23:02:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-30 23:02:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-30 23:02:03       82 阅读
  4. Python语言-面向对象

    2024-01-30 23:02:03       91 阅读

热门阅读

  1. 【每日一题】YACS 473:栈的判断

    2024-01-30 23:02:03       58 阅读
  2. DAY34:贪心算法part、1005\134\135

    2024-01-30 23:02:03       65 阅读
  3. C语言模拟实现strlen的三种方式:

    2024-01-30 23:02:03       57 阅读
  4. Showdown.js: A Comprehensive Guide

    2024-01-30 23:02:03       57 阅读
  5. 电销机器人的优势

    2024-01-30 23:02:03       58 阅读
  6. 如何使用ssh key免密码登录服务器?

    2024-01-30 23:02:03       55 阅读
  7. git Filename too long

    2024-01-30 23:02:03       61 阅读
  8. leetcode-反转链表

    2024-01-30 23:02:03       61 阅读