浅谈Golang中select的用法
在go中, select{ case <- ch1: // do something case i := <- ch2 // use i do something default: // ... } 这个语法看起来和
func main() { ch := make(chan int) for i := 0; i < 10; i++{ select { case ch <- i: case x := <- ch: fmt.Println(x) } } } 这段代码里我们先创建了一个 答案是不能的,这段代码会产生一个 那么我们稍微修改一下这个代码, ch := make(chan int,1) 在这里我们将刚才无缓冲的管道改变为有缓冲且缓冲大小为 0 2 4 6 8 因为这个管道的缓冲值只有 在第一次进入循环的时候,i为0,进入到select中,开始由上向下来发现哪一个case可以执行,当计算表达式 看到这里,大概就能明白select的作用了,顺便说一下,select的case语句中,都是对应一个I/O操作,准确的说是对应一个channel的I/O操作,那么到这里也应该可以理解为什么在code-1中,一个无缓冲的channel能在那段代码中产生一个 这里还引出几个概念: OK!今天就先到这里,下次再继续分享Golang的特色之一, (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |