我正在学习 GO 中的通道和并发性,但我被困在一项任务中。我想要传递一个切片、过滤数字然后打印通道值的函数。问题是,当我使用频道时,它会使程序陷入僵局。这是我的代码:
package main
import (
"fmt"
)
func processOdd(inputs []int) chan int {
oddValues := make(chan int)
for _, numbers := range inputs {
go func(num int) {
if num%2 != 0 {
oddValues <- num
}
}(numbers)
}
return oddValues
}
func processEven(inputs []int) chan int {
evenValues := make(chan int)
for _, numbers := range inputs {
go func(num int) {
if num%2 == 0 {
evenValues <- num
}
}(numbers)
}
return evenValues
}
func main() {
inputs := []int{1, 17, 34, 56, 2, 8}
evenCH := processEven(inputs)
for range inputs {
fmt.Print(<-evenCH)
}
}
HUH函数
相关分类