golang面接問題(10)協程交互印刷奇数偶数


質問:
2つのコプロセッサは、1〜100の奇数偶数を交互に印刷し、1つのコプロセッサは奇数を印刷し、1つのコプロセッサは偶数を印刷する.
 
コード1:
package main

import (
	"fmt"
	"runtime"
	"time"
)

func main() {
	//        CPU   1
	runtime.GOMAXPROCS(1)
	go func() {
		for i := 1; i < 101; i++ {
			//  
			if i%2 == 1 {
				fmt.Println("  1  :",i)
			}
			//  cpu
			runtime.Gosched()
		}
	}()
	go func() {
		for i := 1; i < 101; i++ {
			//  
			if i%2 == 0 {
				fmt.Println("  2  :",i)
			}
			//  cpu
			runtime.Gosched()
		}
	}()
	time.Sleep(3 * time.Second)
}

 
コード2:channelの使用
package main

import (
	"fmt"
	"time"
)

func main() {
	c := make(chan int)
	go func() {
		for i := 1; i < 101; i++ {
			c