当我使用Merb的内置控制台时,我得到类似于标准bash提示的选项卡自动完成.我觉得这很有用,并希望在非merb IRB会话中启用它.如何在IRB中自动完成?
我正在尝试使用Go频道并与go blog下面的功能示例混淆:
func gen(nums []int) <-chan int {
out := make(chan int)
go func() {
for _, n := range nums {
out <- n
}
close(out)
}()
fmt.Println("return statement is called ")
return out
}
Run Code Online (Sandbox Code Playgroud)
主要:
func main() {
c := make(chan int)
c = gen([]int{2, 3, 4, 5})
// Consume the output.
// Print 2,3,4,5
fmt.Println(<-c)
fmt.Println(<-c)
fmt.Println(<-c)
fmt.Println(<-c)
}
Run Code Online (Sandbox Code Playgroud)
完整代码:http://play.golang.org/p/Qh30wzo4m0
我怀疑:
我的理解是,一旦return被调用,函数将被终止,并且该函数内的通道不再有生命.
该return声明只被调用一次.但是out频道的内容被多次阅读.在这种情况下,实际的执行流程是什么?
(我是并发编程的新手.)