@@ -229,8 +229,8 @@ func detectLanguage(acceptLanguage string) string {
229229 }
230230
231231 // Parse Accept-Language header (simplified)
232- languages := strings .Split (acceptLanguage , "," )
233- for _ , lang := range languages {
232+ languages := strings .SplitSeq (acceptLanguage , "," )
233+ for lang := range languages {
234234 // Remove quality value if present (e.g., "en;q=0.9")
235235 langCode := strings .TrimSpace (strings .Split (lang , ";" )[0 ])
236236 // Extract just the language part (e.g., "en" from "en-US")
@@ -369,7 +369,7 @@ func matchSegments(path string, segments []segment) (bool, map[string]string) {
369369// Supports automatic type conversion for string, bool, int, and float types.
370370func bindFormToStruct (form url.Values , v any ) error {
371371 rv := reflect .ValueOf (v )
372- if rv .Kind () != reflect .Ptr || rv .Elem ().Kind () != reflect .Struct {
372+ if rv .Kind () != reflect .Pointer || rv .Elem ().Kind () != reflect .Struct {
373373 return fmt .Errorf ("v must be a pointer to struct" )
374374 }
375375
@@ -458,7 +458,7 @@ func setFieldValue(field reflect.Value, value string) error {
458458// error messages.
459459func validateStruct (val any , lang string ) error {
460460 v := reflect .ValueOf (val )
461- for v .Kind () == reflect .Ptr {
461+ for v .Kind () == reflect .Pointer {
462462 if v .IsNil () {
463463 return fmt .Errorf ("nil value" )
464464 }
@@ -485,10 +485,10 @@ func validateStruct(val any, lang string) error {
485485
486486 if required && fv .IsZero () {
487487 if custom != "" {
488- allErrs = append (allErrs , fmt .Errorf (custom ))
488+ allErrs = append (allErrs , fmt .Errorf ("%s" , custom ))
489489 } else {
490490 allErrs = append (allErrs ,
491- fmt .Errorf (getMessage (lang , "required" , name )))
491+ fmt .Errorf ("%s" , getMessage (lang , "required" , name )))
492492 }
493493 continue
494494 }
@@ -526,7 +526,7 @@ func validateField(
526526 if err := validateStruct (fv .Addr ().Interface (), lang ); err != nil {
527527 return ValidationErrors {err }
528528 }
529- case reflect .Ptr :
529+ case reflect .Pointer :
530530 if ! fv .IsNil () {
531531 if err := validateStruct (fv .Interface (), lang ); err != nil {
532532 return ValidationErrors {err }
@@ -552,7 +552,7 @@ func validateStringField(
552552 if msg == "" {
553553 msg = getMessage (lang , "minlength" , fieldName , min )
554554 }
555- errs = append (errs , fmt .Errorf (msg ))
555+ errs = append (errs , fmt .Errorf ("%s" , msg ))
556556 }
557557 }
558558 if maxTag := f .Tag .Get ("maxlength" ); maxTag != "" {
@@ -561,7 +561,7 @@ func validateStringField(
561561 if msg == "" {
562562 msg = getMessage (lang , "maxlength" , fieldName , max )
563563 }
564- errs = append (errs , fmt .Errorf (msg ))
564+ errs = append (errs , fmt .Errorf ("%s" , msg ))
565565 }
566566 }
567567
@@ -572,7 +572,7 @@ func validateStringField(
572572 if msg == "" {
573573 msg = getMessage (lang , "pattern" , fieldName )
574574 }
575- errs = append (errs , fmt .Errorf (msg ))
575+ errs = append (errs , fmt .Errorf ("%s" , msg ))
576576 }
577577 }
578578
@@ -585,7 +585,7 @@ func validateStringField(
585585 msg = getMessage (lang , "enum" ,
586586 fieldName , strings .Join (allowed , ", " ))
587587 }
588- errs = append (errs , fmt .Errorf (msg ))
588+ errs = append (errs , fmt .Errorf ("%s" , msg ))
589589 }
590590 }
591591
@@ -598,7 +598,7 @@ func validateStringField(
598598 if msg == "" {
599599 msg = getMessage (lang , "email" , fieldName )
600600 }
601- errs = append (errs , fmt .Errorf (msg ))
601+ errs = append (errs , fmt .Errorf ("%s" , msg ))
602602 }
603603 case "url" :
604604 if u , err := url .ParseRequestURI (s ); err != nil ||
@@ -607,7 +607,7 @@ func validateStringField(
607607 if msg == "" {
608608 msg = getMessage (lang , "url" , fieldName )
609609 }
610- errs = append (errs , fmt .Errorf (msg ))
610+ errs = append (errs , fmt .Errorf ("%s" , msg ))
611611 }
612612 case "uuid" :
613613 // RFC-4122 v4 UUID
@@ -619,39 +619,39 @@ func validateStringField(
619619 if msg == "" {
620620 msg = getMessage (lang , "uuid" , fieldName )
621621 }
622- errs = append (errs , fmt .Errorf (msg ))
622+ errs = append (errs , fmt .Errorf ("%s" , msg ))
623623 }
624624 case "date-time" :
625625 if _ , err := time .Parse (time .RFC3339 , s ); err != nil {
626626 msg := custom
627627 if msg == "" {
628628 msg = getMessage (lang , "date-time" , fieldName )
629629 }
630- errs = append (errs , fmt .Errorf (msg ))
630+ errs = append (errs , fmt .Errorf ("%s" , msg ))
631631 }
632632 case "date" :
633633 if _ , err := time .Parse ("2006-01-02" , s ); err != nil {
634634 msg := custom
635635 if msg == "" {
636636 msg = getMessage (lang , "date" , fieldName )
637637 }
638- errs = append (errs , fmt .Errorf (msg ))
638+ errs = append (errs , fmt .Errorf ("%s" , msg ))
639639 }
640640 case "time" :
641641 if _ , err := time .Parse ("15:04:05" , s ); err != nil {
642642 msg := custom
643643 if msg == "" {
644644 msg = getMessage (lang , "time" , fieldName )
645645 }
646- errs = append (errs , fmt .Errorf (msg ))
646+ errs = append (errs , fmt .Errorf ("%s" , msg ))
647647 }
648648 case "password" :
649649 if len (s ) < 8 {
650650 msg := custom
651651 if msg == "" {
652652 msg = getMessage (lang , "password" , fieldName )
653653 }
654- errs = append (errs , fmt .Errorf (msg ))
654+ errs = append (errs , fmt .Errorf ("%s" , msg ))
655655 }
656656 case "phone" :
657657 if matched , _ := regexp .MatchString (
@@ -662,31 +662,31 @@ func validateStringField(
662662 if msg == "" {
663663 msg = getMessage (lang , "phone" , fieldName )
664664 }
665- errs = append (errs , fmt .Errorf (msg ))
665+ errs = append (errs , fmt .Errorf ("%s" , msg ))
666666 }
667667 case "alphanumeric" :
668668 if matched , _ := regexp .MatchString (`^[A-Za-z0-9]+$` , s ); ! matched {
669669 msg := custom
670670 if msg == "" {
671671 msg = getMessage (lang , "alphanumeric" , fieldName )
672672 }
673- errs = append (errs , fmt .Errorf (msg ))
673+ errs = append (errs , fmt .Errorf ("%s" , msg ))
674674 }
675675 case "alpha" :
676676 if matched , _ := regexp .MatchString (`^[A-Za-z]+$` , s ); ! matched {
677677 msg := custom
678678 if msg == "" {
679679 msg = getMessage (lang , "alpha" , fieldName )
680680 }
681- errs = append (errs , fmt .Errorf (msg ))
681+ errs = append (errs , fmt .Errorf ("%s" , msg ))
682682 }
683683 case "numeric" :
684684 if matched , _ := regexp .MatchString (`^[0-9]+$` , s ); ! matched {
685685 msg := custom
686686 if msg == "" {
687687 msg = getMessage (lang , "numeric" , fieldName )
688688 }
689- errs = append (errs , fmt .Errorf (msg ))
689+ errs = append (errs , fmt .Errorf ("%s" , msg ))
690690 }
691691 }
692692 }
@@ -709,7 +709,7 @@ func validateNumericField(
709709 if msg == "" {
710710 msg = getMessage (lang , "min" , fieldName , min )
711711 }
712- errs = append (errs , fmt .Errorf (msg ))
712+ errs = append (errs , fmt .Errorf ("%s" , msg ))
713713 }
714714 }
715715 if maxTag := f .Tag .Get ("max" ); maxTag != "" {
@@ -718,7 +718,7 @@ func validateNumericField(
718718 if msg == "" {
719719 msg = getMessage (lang , "max" , fieldName , max )
720720 }
721- errs = append (errs , fmt .Errorf (msg ))
721+ errs = append (errs , fmt .Errorf ("%s" , msg ))
722722 }
723723 }
724724 if multTag := f .Tag .Get ("multipleOf" ); multTag != "" {
@@ -729,7 +729,7 @@ func validateNumericField(
729729 msg = getMessage (lang , "multipleOf" ,
730730 fieldName , mult )
731731 }
732- errs = append (errs , fmt .Errorf (msg ))
732+ errs = append (errs , fmt .Errorf ("%s" , msg ))
733733 }
734734 }
735735 }
@@ -752,7 +752,7 @@ func validateSliceField(
752752 if msg == "" {
753753 msg = getMessage (lang , "minItems" , fieldName , min )
754754 }
755- errs = append (errs , fmt .Errorf (msg ))
755+ errs = append (errs , fmt .Errorf ("%s" , msg ))
756756 }
757757 }
758758 if maxTag := f .Tag .Get ("maxItems" ); maxTag != "" {
@@ -761,7 +761,7 @@ func validateSliceField(
761761 if msg == "" {
762762 msg = getMessage (lang , "maxItems" , fieldName , max )
763763 }
764- errs = append (errs , fmt .Errorf (msg ))
764+ errs = append (errs , fmt .Errorf ("%s" , msg ))
765765 }
766766 }
767767 if f .Tag .Get ("uniqueItems" ) == "true" {
@@ -773,15 +773,15 @@ func validateSliceField(
773773 if msg == "" {
774774 msg = getMessage (lang , "uniqueItems" , fieldName )
775775 }
776- errs = append (errs , fmt .Errorf (msg ))
776+ errs = append (errs , fmt .Errorf ("%s" , msg ))
777777 }
778778 seen [v ] = true
779779 }
780780 }
781781 for i := range length {
782782 item := fv .Index (i )
783783 if item .Kind () == reflect .Struct ||
784- (item .Kind () == reflect .Ptr && ! item .IsNil ()) {
784+ (item .Kind () == reflect .Pointer && ! item .IsNil ()) {
785785 if sub := validateStruct (item .Interface (), lang ); sub != nil {
786786 errs = append (errs ,
787787 fmt .Errorf ("%s[%d]: %w" , fieldName , i , sub ))
0 commit comments