go version 1.18

package main

import "fmt"

type ConditionResult struct {
    Bool   bool
    String string
    Int    int
    Result map[string]interface{}
    Data   []map[string]interface{}
}

var Conditions = map[string]func(options ...int) ConditionResult{
    //筛选大小
    "filterCompare": func(options ...int) ConditionResult {
        var result ConditionResult
        var condition = options[0]
        var number = options[1]
        if condition <= number {
            result.Bool = true
        }
        return result
    },
    //筛选单数
    "filterOdd": func(options ...int) ConditionResult {
        var result ConditionResult
        var number = options[0]
        if number%2 == 1 {
            result.Bool = true
        }
        return result
    },
    //筛选范围
    "filterRange": func(options ...int) ConditionResult {
        var result ConditionResult
        var start = options[0]
        var end = options[1]
        var number = options[2]
        if start <= number && number < end {
            result.Bool = true
        }
        return result
    },
}

func main() {
    var data = []int{7, 11, 13, 14, 15, 16, 10, 5}

    //Handle(data, "filterOdd")

    Handle(data, "filterCompare", 10)

    Handle(data, "filterRange", 10, 15)
}

func Handle(data []int, conditionName string, options ...int) {
    var argOption = options
    for _, number := range data {
        var result ConditionResult
        options = append(argOption, number)
        result = Conditions[conditionName](options...)
        fmt.Printf("条件参数: %+v\n", options)
        if result.Bool {
            fmt.Printf("number[%d]执行了函数%s,符合,\n", number, conditionName)
        } else {
            fmt.Printf("number[%d]执行了函数%s,不符合 \n", number, conditionName)
        }
        fmt.Println()
    }
}