面试题答案
一键面试package main
import (
"fmt"
)
func square(input chan int, output chan int) {
for num := range input {
output <- num * num
}
close(output)
}
func main() {
numbers := []int{1, 2, 3, 4, 5}
input := make(chan int)
output := make(chan int)
go square(input, output)
for _, num := range numbers {
input <- num
}
close(input)
for result := range output {
fmt.Println(result)
}
}
解释:
square
函数:- 它从
input
通道接收整数,将其平方后发送到output
通道。 - 使用
for... range
循环读取input
通道,当input
通道关闭时,循环结束。 - 最后关闭
output
通道。
- 它从
main
函数:- 定义一组整数
numbers
。 - 创建
input
和output
通道。 - 启动一个
square
函数的goroutine
。 - 将
numbers
中的每个数发送到input
通道,发送完毕后关闭input
通道。 - 使用
for... range
循环读取output
通道并打印结果,当output
通道关闭时,循环结束。
- 定义一组整数