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()
}
}