比较复杂的 channelmap 读取channel

package main

import (
	"fmt"
	"time"
)

func main() {
	things := make(map[chan int](string))
	var data (chan int)
	go func() {
		data = func(map[chan int](string)) chan int {
			c := make(chan int)
			things[c] = "1234"
			return c
		}(things)
		<-data
	}()
	time.Sleep(time.Second * 1)
	go func() {
		for th := range things {
			select {
			case th <- 789:
				fmt.Println("hehe")
			default:
				fmt.Println("default")
			}
		}
	}()
	time.Sleep(time.Second * 3)
}

当 <-data 没有注释掉时候走 case th <- 789:
否则走 default分支

posted @ 2022-07-04 23:34  rincloud  阅读(129)  评论(0)    收藏  举报