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:
parent
a569ed8f26
commit
3f5b0afa2a
@ -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")
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user