MST

星途 面试题库

面试题:Go并发编程中异步回调机制的基础实现

请简述在Go语言并发编程中,如何通过`go`关键字和`channel`结合实现一个简单的异步回调机制。假设你有一个函数`process`,它接受两个整数参数并返回它们的和,在另一个`main`函数中,启动一个异步任务调用`process`,并通过回调函数处理返回结果。请给出代码示例。
41.0万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
)

// process函数接受两个整数参数并返回它们的和
func process(a, b int) int {
    return a + b
}

func main() {
    // 创建一个channel用于传递结果
    resultChan := make(chan int)

    // 启动一个异步任务
    go func() {
        a, b := 3, 5
        res := process(a, b)
        // 将结果发送到channel
        resultChan <- res
    }()

    // 通过回调函数处理返回结果
    go func() {
        result := <-resultChan
        fmt.Printf("异步任务结果: %d\n", result)
        close(resultChan)
    }()

    // 防止main函数退出
    select {}
}
  1. 首先定义了process函数,该函数实现两个整数相加的功能。
  2. main函数中创建了一个int类型的channel resultChan用于传递process函数的计算结果。
  3. 使用go关键字启动一个匿名goroutine,在这个goroutine中调用process函数并将结果发送到channel
  4. 再启动另一个匿名goroutinechannel中接收结果并通过fmt.Printf打印,模拟回调处理。
  5. 最后使用select {}阻塞main函数,防止main函数过早退出导致程序结束。