MST

星途 面试题库

面试题:Go 反射实现动态调用函数

假设你有一组不同参数和返回值的函数,现在需要通过反射机制根据传入的函数名动态调用相应函数,并且处理函数的参数和返回值。请描述实现思路并给出核心代码示例。
41.9万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 定义函数映射:创建一个映射表,将函数名映射到对应的函数指针或函数对象。
  2. 获取函数:根据传入的函数名,从映射表中获取对应的函数。
  3. 处理参数:将传入的参数按照函数定义的参数类型进行转换和匹配。
  4. 调用函数:通过反射机制调用获取到的函数,并传递处理后的参数。
  5. 处理返回值:根据函数定义的返回值类型,对返回值进行处理和转换。

核心代码示例(以Python为例)

def func1(a, b):
    return a + b

def func2(c, d):
    return c * d

function_mapping = {
    'func1': func1,
    'func2': func2
}

def call_function(func_name, *args):
    if func_name not in function_mapping:
        raise ValueError(f"Function {func_name} not found")
    func = function_mapping[func_name]
    return func(*args)

# 调用示例
result1 = call_function('func1', 1, 2)
result2 = call_function('func2', 3, 4)
print(result1)  
print(result2)  

说明

  1. 首先定义了两个不同参数和返回值的函数 func1func2
  2. 创建 function_mapping 字典,将函数名与函数对象进行映射。
  3. call_function 函数根据传入的函数名从映射表中获取函数,并调用该函数,传递参数并返回结果。