摘要:今天面試中,面試官讓寫 兩個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()
}