package valid import ( "context" "reflect" "strings" "github.com/gogf/gf/errors/gerror" "github.com/gogf/gf/util/gconv" "github.com/gogf/gf/util/gvalid" ) func init() { if err := gvalid.RegisterRule("int-in", IntInChecker); err != nil { panic(err) } } func IntInChecker(ctx context.Context, rule string, value interface{}, message string, data interface{}) error { // rule int-in:1,2 // fmt.Println(rule, value, value == nil) if value == nil { return nil } reflectValue := reflect.ValueOf(value) if reflectValue.Kind() == reflect.Ptr { if reflectValue.IsNil() { return nil } } v := gconv.String(value) allow := strings.Split(rule, ":") if len(allow) < 2 { return nil } allow = strings.Split(allow[1], ",") for _, a := range allow { if v == a { return nil } } return gerror.New(message) }