bbgo_origin/pkg/util/simple_args.go
2022-07-12 17:55:15 +08:00

32 lines
783 B
Go

package util
import (
"reflect"
"time"
"github.com/c9s/bbgo/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, []byte, 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
}