diff --git a/convertor/convertor.go b/convertor/convertor.go index 20ebc74..dea10f5 100644 --- a/convertor/convertor.go +++ b/convertor/convertor.go @@ -74,6 +74,20 @@ func ToChar(s string) []string { return c } +// ToChannel convert a array of elements to a read-only channels +func ToChannel[T any](array []T) <-chan T { + ch := make(chan T) + + go func() { + for _, item := range array { + ch <- item + } + close(ch) + }() + + return ch +} + // ToString convert value to string func ToString(value any) string { res := "" diff --git a/convertor/convertor_test.go b/convertor/convertor_test.go index 0ec2fab..d05ed98 100644 --- a/convertor/convertor_test.go +++ b/convertor/convertor_test.go @@ -21,6 +21,23 @@ func TestToChar(t *testing.T) { } } +func TestToChannel(t *testing.T) { + assert := internal.NewAssert(t, "TestToChannel") + + ch := ToChannel([]int{1, 2, 3}) + val1, _ := <-ch + assert.Equal(1, val1) + + val2, _ := <-ch + assert.Equal(2, val2) + + val3, _ := <-ch + assert.Equal(3, val3) + + _, ok := <-ch + assert.Equal(false, ok) +} + func TestToBool(t *testing.T) { assert := internal.NewAssert(t, "TestToBool")