一个线程打印奇数一个线程打印偶数 交替打印

题目来源:字节跳动

答案:

  1. package main
  2. import (
  3. "fmt"
  4. "time"
  5. )
  6. var num = 100
  7. func goroutine1(p chan int) {
  8. for i := 1; i <= num; i++ {
  9. p <- i
  10. if i%2 == 1 {
  11. fmt.Println("goroutine-1:", i)
  12. }
  13. }
  14. }
  15. func goroutine2(p chan int) {
  16. for i := 1; i <= num; i++ {
  17. <-p
  18. if i%2 == 0 {
  19. fmt.Println("goroutine-2:", i)
  20. }
  21. }
  22. }
  23. func main() {
  24. msg := make(chan int)
  25. go goroutine1(msg)
  26. go goroutine2(msg)
  27. time.Sleep(time.Second * 1)
  28. }