初级会员
  • 第 2559 位会员
  • stansun
  • yanjun.sun@qq.com
  • 2015-03-22 04:38:11
  • Offline
  • 0

最近发布的主题

    暂无

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • #6 @663280439 select永远拿0值,从两个 case 里面随机拿。说明进入两个 case 是随机的。
  • 这个程序 有问题,你的 case 的 else 部分永远得不到执行。所以 根本不能证明什么。给你加上 close(ch1);close(ch2)就可以了 ```go package main import "fmt" import "time" func main() { //定义两个字符串类型的channel ch1, ch2 := make(chan string, 0), make(chan string, 0) //启用goruntine不断从两个channel中读取数据 go func() { fmt.Println("start") time.Sleep(5 * time.Second) fmt.Println("wait") time.Sleep(2 * time.Second) //i := 1 for { // fmt.Println(i) // i++ select { case v, ok := <-ch1: if ok { fmt.Println(ok, v) } else { fmt.Println("!!!!") } case v, ok := <-ch2: if ok { fmt.Println(ok, v) } else { fmt.Println("~~~~") } } } }() time.Sleep(2 * time.Second) ch1 <- "cccc" ch2 <- "dddd" close(ch1) close(ch2) time.Sleep(1 * time.Second) fmt.Println("end") } ```