Is is possible? Of course!
package main
func add(x, y int) int {
return x + y
}
func mul(x, y int) int {
return x * y
}
func runner(ch chan func(int, int)(int)) {
for f := range ch {
println("f(1, 2) = ", f(1, 2))
}
}
func main() {
ch := make(chan func(int, int)(int))
go runner(ch)
ch <- add
ch <- mul
ch <- add
close(ch)
}
Is it useful? Probably, but this demo doesn’t show how yet… have to think about what patterns this makes possible.