qbtrade/pkg/util/simple_args.go

32 lines
815 B
Go
Raw Normal View History

2024-06-27 14:42:38 +00:00
package util
import (
"reflect"
"time"
"git.qtrade.icu/lychiyu/qbtrade/pkg/fixedpoint"
)
// FilterSimpleArgs filters out the simple type arguments
// int, string, bool, and []byte
func FilterSimpleArgs(args []interface{}) (simpleArgs []interface{}) {
for _, arg := range args {
switch arg.(type) {
case int, int64, int32, uint64, uint32, string, []string, []byte, float64, []float64, float32, fixedpoint.Value, time.Time:
simpleArgs = append(simpleArgs, arg)
default:
rt := reflect.TypeOf(arg)
if rt.Kind() == reflect.Ptr {
rt = rt.Elem()
}
switch rt.Kind() {
case reflect.Float64, reflect.Float32, reflect.String, reflect.Int, reflect.Int32, reflect.Uint32, reflect.Int64, reflect.Uint64, reflect.Bool:
simpleArgs = append(simpleArgs, arg)
}
}
}
return simpleArgs
}