摘要:今天面试中,面试官让写 两个goroutine 交替打印一个数组中的元素,没有写出来,所以今天总结一下:
package main import ( "fmt" "time" ) var arr = [5]int{1, 2, 3, 4, 5} func g1(ch chan bool) { for i := 0; i < 5; i++ { ch <- true if i%2 == 0 { fmt.Println("goroutine-1: ", arr[i]) } } } func g2(ch chan bool) { for i := 0; i < 5; i++ { <-ch if i%2 == 1 { fmt.Println("goroutine-2: ", arr[i]) } } } func main() { ch := make(chan bool) go g1(ch) go g2(ch) time.Sleep(time.Second * 1) }