diff --git a/convertor/convertor.go b/convertor/convertor.go index 7a0a810..63f37fe 100644 --- a/convertor/convertor.go +++ b/convertor/convertor.go @@ -229,3 +229,17 @@ func ColorRGBToHex(red, green, blue int) string { return "#" + r + g + b } + +// ToChannel convert a array of elements to a read-only channels +func ToChannel(array []interface{}) <-chan interface{} { + ch := make(chan interface{}) + + go func() { + for _, item := range array { + ch <- item + } + close(ch) + }() + + return ch +} diff --git a/convertor/convertor_test.go b/convertor/convertor_test.go index d0768c5..a028309 100644 --- a/convertor/convertor_test.go +++ b/convertor/convertor_test.go @@ -178,3 +178,20 @@ func TestColorRGBToHex(t *testing.T) { assert := internal.NewAssert(t, "TestColorRGBToHex") assert.Equal(expected, colorHex) } + +func TestToChannel(t *testing.T) { + assert := internal.NewAssert(t, "TestToChannel") + + ch := ToChannel([]interface{}{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) +}