MST

星途 面试题库

面试题:Go中如何在future模式下实现简单的超时处理

假设你在Go语言的future模式下有一个函数调用可能会耗时较久,你需要设置一个2秒的超时时间,当超时发生时函数返回一个错误信息。请编写相应的代码示例,包含必要的函数定义和超时处理逻辑。
40.2万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "context"
    "fmt"
    "time"
)

// 模拟耗时操作的函数
func longRunningFunction(ctx context.Context) (string, error) {
    select {
    case <-time.After(3 * time.Second): // 模拟耗时3秒的操作
        return "操作完成", nil
    case <-ctx.Done():
        return "", ctx.Err()
    }
}

func main() {
    // 创建带有2秒超时的上下文
    ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
    defer cancel()

    result, err := longRunningFunction(ctx)
    if err != nil {
        fmt.Println("操作超时:", err)
    } else {
        fmt.Println("操作结果:", result)
    }
}