// Run 执行代码
func (such *YaegiExcuteBox) Run(
excuteObjectInterface interface{},
funcName string,
funContext *core.FunctionContext,
input string,
) (interface{}, string, error) {
excuteObject := excuteObjectInterface.(*interp.Interpreter)
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
val, err := excuteObject.EvalWithContext(ctx, funcName)
if err != nil {
return nil, "", err
}
fn := val.Interface().(func(*core.FunctionContext, string) (interface{}, string, error))
rsp, logs, err := fn(funContext, input)
if err != nil {
fmt.Println("fn fail, err====", err)
return nil, logs, err
}
if err != nil {
return rsp, logs, err
} else {
return rsp, logs, nil
}
}
as showed above, how can i use evalWitchContext in custom function with params; and exit when timeout