refactor(slice): simplify SliceValidationError Error method (#3910)
* Simplify SliceValidationError Error method * Replace fmt.Fprintf with b.WriteString --------- Co-authored-by: huangzw <huangzw@hsmap.com> Co-authored-by: 1911860538 <alxps1911@163.com>
This commit is contained in:
		@ -5,8 +5,8 @@
 | 
				
			|||||||
package binding
 | 
					package binding
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
					 | 
				
			||||||
	"reflect"
 | 
						"reflect"
 | 
				
			||||||
 | 
						"strconv"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
	"sync"
 | 
						"sync"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -22,26 +22,21 @@ type SliceValidationError []error
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Error concatenates all error elements in SliceValidationError into a single string separated by \n.
 | 
					// Error concatenates all error elements in SliceValidationError into a single string separated by \n.
 | 
				
			||||||
func (err SliceValidationError) Error() string {
 | 
					func (err SliceValidationError) Error() string {
 | 
				
			||||||
	n := len(err)
 | 
						if len(err) == 0 {
 | 
				
			||||||
	switch n {
 | 
					 | 
				
			||||||
	case 0:
 | 
					 | 
				
			||||||
		return ""
 | 
							return ""
 | 
				
			||||||
	default:
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var b strings.Builder
 | 
						var b strings.Builder
 | 
				
			||||||
		if err[0] != nil {
 | 
						for i := 0; i < len(err); i++ {
 | 
				
			||||||
			fmt.Fprintf(&b, "[%d]: %s", 0, err[0].Error())
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		if n > 1 {
 | 
					 | 
				
			||||||
			for i := 1; i < n; i++ {
 | 
					 | 
				
			||||||
		if err[i] != nil {
 | 
							if err[i] != nil {
 | 
				
			||||||
 | 
								if b.Len() > 0 {
 | 
				
			||||||
				b.WriteString("\n")
 | 
									b.WriteString("\n")
 | 
				
			||||||
					fmt.Fprintf(&b, "[%d]: %s", i, err[i].Error())
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
								b.WriteString("[" + strconv.Itoa(i) + "]: " + err[i].Error())
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return b.String()
 | 
						return b.String()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
var _ StructValidator = (*defaultValidator)(nil)
 | 
					var _ StructValidator = (*defaultValidator)(nil)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -12,11 +12,15 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func BenchmarkSliceValidationError(b *testing.B) {
 | 
					func BenchmarkSliceValidationError(b *testing.B) {
 | 
				
			||||||
	const size int = 100
 | 
						const size int = 100
 | 
				
			||||||
	for i := 0; i < b.N; i++ {
 | 
					 | 
				
			||||||
	e := make(SliceValidationError, size)
 | 
						e := make(SliceValidationError, size)
 | 
				
			||||||
	for j := 0; j < size; j++ {
 | 
						for j := 0; j < size; j++ {
 | 
				
			||||||
		e[j] = errors.New(strconv.Itoa(j))
 | 
							e[j] = errors.New(strconv.Itoa(j))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						b.ReportAllocs()
 | 
				
			||||||
 | 
						b.ResetTimer()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for i := 0; i < b.N; i++ {
 | 
				
			||||||
		if len(e.Error()) == 0 {
 | 
							if len(e.Error()) == 0 {
 | 
				
			||||||
			b.Errorf("error")
 | 
								b.Errorf("error")
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user