feat(StringSlice): support cast string to string slice by comma (#1)
This commit is contained in:
parent
8965335b8c
commit
9b1b06389b
@ -974,6 +974,10 @@ func TestToStringSliceE(t *testing.T) {
|
|||||||
{[]string{"a", "b"}, []string{"a", "b"}, false},
|
{[]string{"a", "b"}, []string{"a", "b"}, false},
|
||||||
{[]interface{}{1, 3}, []string{"1", "3"}, false},
|
{[]interface{}{1, 3}, []string{"1", "3"}, false},
|
||||||
{interface{}(1), []string{"1"}, false},
|
{interface{}(1), []string{"1"}, false},
|
||||||
|
{"a", []string{"a"}, false},
|
||||||
|
{"a b", []string{"a", "b"}, false},
|
||||||
|
{"a,b", []string{"a", "b"}, false},
|
||||||
|
{"a b,c", []string{"a", "b,c"}, false},
|
||||||
// errors
|
// errors
|
||||||
{nil, nil, true},
|
{nil, nil, true},
|
||||||
{testing.T{}, nil, true},
|
{testing.T{}, nil, true},
|
||||||
|
9
caste.go
9
caste.go
@ -1049,7 +1049,14 @@ func ToStringSliceE(i interface{}) ([]string, error) {
|
|||||||
case []string:
|
case []string:
|
||||||
return v, nil
|
return v, nil
|
||||||
case string:
|
case string:
|
||||||
return strings.Fields(v), nil
|
slice := strings.Fields(v)
|
||||||
|
// if the string can be splited by white space
|
||||||
|
// return slice immediately
|
||||||
|
if len(slice) > 1 {
|
||||||
|
return slice, nil
|
||||||
|
}
|
||||||
|
// otherwise, try to split string by comma
|
||||||
|
return strings.Split(v, ","), nil
|
||||||
case interface{}:
|
case interface{}:
|
||||||
str, err := ToStringE(v)
|
str, err := ToStringE(v)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user