From b3149ea619c9df8cf1d00c595b617a74e74903c4 Mon Sep 17 00:00:00 2001 From: dudaodong Date: Wed, 27 Jul 2022 15:22:43 +0800 Subject: [PATCH] feat: convertor.go, add ToChannel --- convertor/convertor.go | 14 ++++++++++++++ convertor/convertor_test.go | 17 +++++++++++++++++ 2 files changed, 31 insertions(+) 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) +}