Golang面试题: 两个goroutine交替打印1-100之间的奇数和偶数

文章目录

  • 题目介绍
  • 做法一
  • 做法二
  • 做法三

开心一刻

       一个国王要替公主征婚,把一个苹果放在公主头上,谁要把它射中就有机会迎娶公主。

       第一个男士把苹果射中,他说:“I’m 罗宾。”

       第二个男士也把苹果射中,他说:“I’m 后羿。”

       第三个男士不小心把公主射死了,他说:“ I’m sorry…"

题目介绍

       使用两个goroutine交替打印1-100之间的奇数和偶数, 输出时按照从小到大输出.

做法一

package main

import (
	"fmt"
	"sync"
)

func main() {
   
	ch := make(chan struct{
   })
	var wg sync.WaitGroup
	wg.Add(2)
	go func() {
   
		defer wg.Done()
		for i := 1; i < 101; i++ {
   
			ch <- struct{
   }{
   }
			//奇数
			if i%2 == 1 {
   
				fmt.Println("线程1打印:",i)
			}
		}
	}()
	go func() {
   
		defer wg.Done()
		for i := 1; i < 101; i++ {
   
			<- c

你可能感兴趣的:(Go,golang,多线程)