MST

星途 面试题库

面试题:Go代码生成之函数动态生成

假设你有一个需求,需要根据用户输入的数学运算符号(例如'+', '-', '*', '/')动态生成对应的运算函数。例如用户输入'+', 就生成一个函数,接受两个整数参数并返回它们的和。请使用Go语言的代码生成技巧实现该功能,说明代码生成的关键步骤并给出完整代码示例。
37.7万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试

代码生成关键步骤

  1. 定义函数类型:定义一个函数类型,它接受两个整数参数并返回一个整数。
  2. 使用map来存储符号与函数的映射:创建一个map,键为运算符号,值为对应的运算函数。
  3. 根据输入符号获取对应函数:通过用户输入的符号,从map中获取对应的运算函数。

完整代码示例

package main

import (
    "fmt"
    "errors"
)

// 定义函数类型
type MathFunc func(int, int) int

func main() {
    // 初始化符号与函数的映射
    mathFuncs := map[string]MathFunc{
        "+": func(a, b int) int {
            return a + b
        },
        "-": func(a, b int) int {
            return a - b
        },
        "*": func(a, b int) int {
            return a * b
        },
        "/": func(a, b int) int {
            return a / b
        },
    }

    symbol := "+" // 模拟用户输入的符号
    num1 := 5
    num2 := 3

    // 根据符号获取函数
    mathFunc, ok := mathFuncs[symbol]
    if!ok {
        fmt.Println("不支持的运算符号")
        return
    }

    result := mathFunc(num1, num2)
    fmt.Printf("%d %s %d = %d\n", num1, symbol, num2, result)
}