// +build ignore,OMIT package main import ( "fmt" "reflect" ) func sendSlice(slice interface{}) (channel interface{}) { sliceValue := reflect.ValueOf(slice) chanType := reflect.ChanOf(reflect.BothDir, sliceValue.Type().Elem()) chanValue := reflect.MakeChan(chanType, 0) go func() { for i := 0; i < sliceValue.Len(); i++ { chanValue.Send(sliceValue.Index(i)) } chanValue.Close() }() return chanValue.Interface() } func main() { ch := sendSlice([]int{1, 2, 3, 4, 5}).(chan int) for v := range ch { fmt.Println(v) } }