diff --git a/core/mapping/unmarshaler.go b/core/mapping/unmarshaler.go index e4587cd36..3ce016fc1 100644 --- a/core/mapping/unmarshaler.go +++ b/core/mapping/unmarshaler.go @@ -7,6 +7,7 @@ import ( "errors" "fmt" "reflect" + "slices" "strconv" "strings" "sync" @@ -15,7 +16,6 @@ import ( "github.com/zeromicro/go-zero/core/jsonx" "github.com/zeromicro/go-zero/core/lang" "github.com/zeromicro/go-zero/core/proc" - "github.com/zeromicro/go-zero/core/stringx" ) const ( @@ -894,7 +894,7 @@ func (u *Unmarshaler) processNamedFieldWithValueFromString(fieldType reflect.Typ valueKind.String()) } - if !stringx.Contains(options, checkValue) { + if !slices.Contains(options, checkValue) { return fmt.Errorf(`value "%s" for field %q is not defined in options "%v"`, mapValue, key, options) } diff --git a/core/mapping/utils.go b/core/mapping/utils.go index f84167e3f..4995c3634 100644 --- a/core/mapping/utils.go +++ b/core/mapping/utils.go @@ -6,6 +6,7 @@ import ( "fmt" "math" "reflect" + "slices" "strconv" "strings" "sync" @@ -634,11 +635,11 @@ func validateValueInOptions(val any, options []string) error { if len(options) > 0 { switch v := val.(type) { case string: - if !stringx.Contains(options, v) { + if !slices.Contains(options, v) { return fmt.Errorf(`error: value %q is not defined in options "%v"`, v, options) } default: - if !stringx.Contains(options, Repr(v)) { + if !slices.Contains(options, Repr(v)) { return fmt.Errorf(`error: value "%v" is not defined in options "%v"`, val, options) } } diff --git a/core/stringx/strings.go b/core/stringx/strings.go index 155c8b3ea..4d09e1b73 100644 --- a/core/stringx/strings.go +++ b/core/stringx/strings.go @@ -2,6 +2,7 @@ package stringx import ( "errors" + "slices" "unicode" "github.com/zeromicro/go-zero/core/lang" @@ -14,17 +15,6 @@ var ( ErrInvalidStopPosition = errors.New("stop position is invalid") ) -// Contains checks if str is in list. -func Contains(list []string, str string) bool { - for _, each := range list { - if each == str { - return true - } - } - - return false -} - // Filter filters chars from s with given filter function. func Filter(s string, filter func(r rune) bool) string { var n int @@ -123,11 +113,7 @@ func Remove(strings []string, strs ...string) []string { // Reverse reverses s. func Reverse(s string) string { runes := []rune(s) - - for from, to := 0, len(runes)-1; from < to; from, to = from+1, to-1 { - runes[from], runes[to] = runes[to], runes[from] - } - + slices.Reverse(runes) return string(runes) } diff --git a/core/stringx/strings_test.go b/core/stringx/strings_test.go index 2caffd3e0..15fadce73 100644 --- a/core/stringx/strings_test.go +++ b/core/stringx/strings_test.go @@ -41,28 +41,6 @@ func TestNotEmpty(t *testing.T) { } } -func TestContainsString(t *testing.T) { - cases := []struct { - slice []string - value string - expect bool - }{ - {[]string{"1"}, "1", true}, - {[]string{"1"}, "2", false}, - {[]string{"1", "2"}, "1", true}, - {[]string{"1", "2"}, "3", false}, - {nil, "3", false}, - {nil, "", false}, - } - - for _, each := range cases { - t.Run(path.Join(each.slice...), func(t *testing.T) { - actual := Contains(each.slice, each.value) - assert.Equal(t, each.expect, actual) - }) - } -} - func TestFilter(t *testing.T) { cases := []struct { input string