MST
星途 面试题库

面试题:Go语言中如何基于函数实现简单的响应式编程示例

请使用Go语言编写一段代码,通过函数实现一个简单的响应式编程逻辑。例如,创建一个接收整数流的函数,每当新的整数传入时,计算并输出该整数的平方值。要求展示如何利用Go的特性(如通道、goroutine等)来实现这种响应式处理。
30.7万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
)

func squareStream(intStream <-chan int, resultStream chan<- int) {
    for num := range intStream {
        resultStream <- num * num
    }
    close(resultStream)
}

你可以这样调用这个函数:

func main() {
    intStream := make(chan int)
    resultStream := make(chan int)

    go squareStream(intStream, resultStream)

    // 模拟传入整数流
    go func() {
        intStream <- 2
        intStream <- 3
        intStream <- 4
        close(intStream)
    }()

    for result := range resultStream {
        fmt.Println(result)
    }
}

在上述代码中:

  1. squareStream 函数接受一个只读通道 intStream 用于接收整数流,以及一个只写通道 resultStream 用于输出计算后的平方值。
  2. squareStream 函数内部,通过 for... range 循环从 intStream 通道接收整数,计算平方值并发送到 resultStream 通道。当 intStream 通道关闭时,循环结束,并关闭 resultStream 通道。
  3. main 函数中,创建了 intStreamresultStream 两个通道,并启动一个 goroutine 来执行 squareStream 函数。
  4. 另外启动一个 goroutine 模拟向 intStream 通道传入整数流,并在完成后关闭 intStream 通道。
  5. main 函数的最后,通过 for... range 循环从 resultStream 通道接收并打印计算结果,直到 resultStream 通道关闭。