Alternative Golang solution.... Though it's not supported.
\npackage main\n\nimport (\n\t"fmt"\n\t"runtime"\n\t"sync"\n)\n\nvar (\n\twait sync.WaitGroup\n\te    chan int\n\to    chan int\n)\n\nfunc init() {\n\te = make(
```\npackage main\n\nimport (\n\t"fmt"\n\t"runtime"\n\t"sync"\n)\n\nvar (\n\twait sync.WaitGroup\n\te    chan int\n\to    chan int\n)\n\nfunc init() {\n\te = make(chan int)\n\to = make(chan int)\n}\n\ntype ZeroEvenOdd struct {\n\tn int\n}\n\nfunc (z *ZeroEvenOdd) zero() {\n\tfor i := 1; i <= z.n; i++ {\n\t\tfmt.Print("0")\n\t\tif i%2 == 1 {\n\t\t\to <- i\n\t\t} else {\n\t\t\te <- i\n\t\t}\n\t\truntime.Gosched()\n\t}\n\tclose(e)\n\tclose(o)\n\twait.Done()\n}\n\nfunc (z *ZeroEvenOdd) even() {\n\tfor value := range e {\n\t\tfmt.Print(value)\n\t}\n\twait.Done()\n}\n\nfunc (z *ZeroEvenOdd) odd() {\n\tfor value := range o {\n\t\tfmt.Print(value)\n\t}\n\twait.Done()\n}\n\nfunc main() {\n\tz := ZeroEvenOdd{2}\n\twait.Add(3)\n\tgo z.zero()\n\tgo z.even()\n\tgo z.odd()\n\twait.Wait()\n}\n\n```
[]