为什么 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
    }
}

select 不是放在死循环里了吗