Go 给定代码的执行流程将如何?以及围棋程序将如何在这里执行?
并发编程新手 我有一个疑问,为什么goroutines的执行流程在这里有点奇怪 golang中goroutines和Channel内容的初学者Go 给定代码的执行流程将如何?以及围棋程序将如何在这里执行?,go,concurrency,goroutine,Go,Concurrency,Goroutine,并发编程新手 我有一个疑问,为什么goroutines的执行流程在这里有点奇怪 golang中goroutines和Channel内容的初学者 func main() { // Set up the pipeline. c := gen(2, 3) out := sq(c) // Consume the output. fmt.Println(<-out) // 4 fmt.Println(<-out) // 9 } func sq
func main() {
// Set up the pipeline.
c := gen(2, 3)
out := sq(c)
// Consume the output.
fmt.Println(<-out) // 4
fmt.Println(<-out) // 9
}
func sq(in <-chan int) <-chan int {
out := make(chan int)
go func() {
for n := range in {
out <- n * n
}
close(out)
}()
return out
}
func gen(nums ...int) <-chan int {
out := make(chan int)
go func() {
for _, n := range nums {
out <- n
}
close(out)
}()
return out
}
对gen和sq的调用完成后,将有3个goroutine同时运行。它们在通道之间传递数据,因此执行产生相同的结果
根内
sq内部
主要的
他们总是传递至少两条信息,因此按照下面的顺序运行代码
发电机内部输出sq内部输出主打印LN
对gen和sq的调用完成后,将有3个goroutine同时运行。它们在通道之间传递数据,因此执行产生相同的结果
根内
sq内部
主要的
他们总是传递至少两条信息,因此按照下面的顺序运行代码
发电机内部输出sq内部输出主打印LN
希望能有帮助。它是一个通用的管道图。所以有三个goroutine和两个通道
希望能有帮助。它是一个通用的管道图。有三个goroutine和两个通道有人能解释一下这里的执行流程吗?你到底需要什么?图?简要描述:取两个数字,用gen创建一个通道。然后将该通道传递给sq,sq从通道中读取数据,直到它关闭。实际上,它在gen中关闭。sq使新通道传递两个元素,然后关闭它。然后你阅读两个元素的fmtA图解释可能会有所帮助。有人能解释一下这里的执行流程吗?你到底需要什么?图?简要描述:取两个数字,用gen创建一个通道。然后将该通道传递给sq,sq从通道中读取数据,直到它关闭。实际上,它在gen中关闭。sq使新通道传递两个元素,然后关闭它。然后,您阅读两个元素与fmtA图表的解释可能会有所帮助。