2012年11月01日 星期四

golang select 没default,如循环for

原以为select像 switch一样,不管有没有匹配的项都会向下执行.其实,select 更像for一样,只有批评了一项,才跳出,里面, 使用break,同在for中一样. 下面是一个示例:
package main

import "time"
import "fmt"

func main() {
	c1 := make(chan string)
	c2 := make(chan string)
	go func() {
		time.Sleep(time.Second * 1)
		c1 <- "one"
	}()
	go func() {
		time.Sleep(time.Second * 2)
		c2 <- "two"
	}()

	for i := 0; i < 2; i++ {
		fmt.Println(i)
		select {
		case msg1 :=
运行结果:
0
received one
1
received two
[Finished in 2.5s]