报李皆知待影几懂 2022-11-18 17:18 采纳率: 80%
浏览 3
已结题

为什么 select 可以一直读取数据,func函数不是只运行了一次吗

为什么 select 可以一直读取数据,func函数不是只运行了一次吗?

package main

import "time"

var chanInt = make(chan int)
var chanStr = make(chan string)

func main() {
    go func() {
        chanInt <- 100
        chanStr <- "200"
        close(chanStr)
        close(chanInt)
        //time.Sleep(time.Second)
    }() // will the coroutine always run?
    println(<-chanInt)
    println(<-chanStr)
    println(<-chanStr)
    println(<-chanStr)
    println(<-chanStr)
    for true {
        println("begin select")
        select {
        case r := <-chanInt:
            {
                println("chanInt", r)
            }
        case r := <-chanStr:
            {
                println("chanStr", r)
            }
        default:
            println("default..")
            break
        }
        time.Sleep(time.Second)
        //break
    }
}
  • 写回答

1条回答 默认 最新

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

      • 系统已结题 11月26日
      • 已采纳回答 11月18日
      • 创建了问题 11月18日

      悬赏问题

      • ¥15 这幅db-RDA图是怎么画的?
      • ¥15 类文件具有错误的版本 61.0, 应为 52.0
      • ¥15 main函数里scanf_s("%c",&t)字符没办f法输入,断点调试时&t显示烫,求看看问题在哪?
      • ¥15 初学者学习xbeach 用matlab,缺失XBeach MATLAB Toolbox
      • ¥15 QEMU virt开发板无法访问CLINT空间
      • ¥20 如何将tiff格式数据作为因变量,输入已建立的机器学习模型中,得到结果同样为空间tiff格式的数据
      • ¥20 编写一个脚本监听sql的运行状态并联动另一台服务器上的服务重启
      • ¥215 一年前的硬盘数据恢复
      • ¥15 htmclxx 求提供给64位windows预编译库
      • ¥15 如何用线性表实现通讯录管理功能,根据条件输出对应分类的信息