http://play.golang.org/p/uRHG-Th_2P
我很难理解频道的概念
package main
import (
"fmt"
)
func Fibonacci(limit int, chnvar chan int) {
x, y := 0, 1
for i := 0; i < limit; i++ {
chnvar <- x
x, y = y, x+y
}
close(chnvar)
v, ok := <-chnvar
fmt.Println(v, ok)
}
func main() {
chn := make(chan int, 10)
go Fibonacci(cap(chn), chn)
for elem := range chn {
fmt.Printf("%v ", elem)
}
}
//1 1 2 3 5 8 13 21 34
1)如何从行中获取假值
v, ok := <-chnvar
如果没有更多的值要获取,它会说 false。如果通道关闭,则为 false。但在这种情况下,通道已关闭但(?)仍然获得真实值。
如果我关闭,它会恐慌。
它如何以及为什么在这里返回 true ?
2)线路
go Fibonacci(cap(chn), chn)
也可以在没有 goroutine 的情况下运行。有什么区别?只是性能问题。
qq_遁去的一_1
蓝山帝景
相关分类