摘要:今天面试中,面试官让写 两个goroutine 交替打印一个数组中的元素,没有写出来,所以今天总结一下:

package main
import (
"fmt"
"sync"
)

var arr = [5]int{1, 2, 3, 4, 5}

func g1(ch chan struct{}) {
for i := 0; i < 5; i++ {
ch <- struct{}{}
if i%2 == 0 {
fmt.Println("goroutine-1: ", arr[i])
}
}
}

func g2(ch chan struct{}) {
for i := 0; i < 5; i++ {
<-ch
if i%2 == 1 {
fmt.Println("goroutine-2: ", arr[i])
}
}
}

func Echo() {
ch := make(chan struct{})

var wg sync.WaitGroup

wg.Add(2)

go func() {
g1(ch)
wg.Done()
}()

go func() {
g2(ch)
wg.Done()
}()

wg.Wait()
}

 

相关文章:

  • 2022-01-11
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-25
  • 2022-12-23
  • 2022-02-27
  • 2021-09-01
  • 2021-11-05
  • 2021-04-04
  • 2021-10-16
相关资源
相似解决方案