我命由我,不由天!


  • 搜索
prometheus docker golang linux kubernetes

golang面试题-顺序打印cat、dog、fish各100次

发表于 2021-02-08 | 分类于 golang | 0 | 阅读次数 2006
package main

import (
	"fmt"
	"sync"
)


func PrintCat(fishCH,catCH chan bool){
	defer waitgroup.Done()
	defer close(catCH)
	for i:= 0; i <100;i++{
		<-fishCH
		fmt.Println("cat ...")
		catCH <- true
	}
}

func PrintDog(catCH,dogCH chan bool){
	defer waitgroup.Done()
	defer close(dogCH)
	for i:= 0; i <100;i++{
		<-catCH
		fmt.Println("dog ...")
		dogCH<-true
	}
}

func PrintFish(dogCH,fishCH chan bool){
	defer waitgroup.Done()
	defer close(fishCH)
	for i:= 0; i <100;i++{
		<-dogCH
		fmt.Println("fish ...")
		fishCH<-true
	}
}


var waitgroup sync.WaitGroup

func main() {

	catCH := make(chan bool,1)
	dogCH := make(chan bool,1)
	fishCH := make(chan bool,1)
	fishCH <- true


	go PrintFish(dogCH,fishCH)
	go PrintDog(catCH,dogCH)
	go PrintCat(fishCH,catCH)

	waitgroup.Add(3)
	waitgroup.Wait()

}


  • 本文作者: Dante
  • 本文链接: https://gaodongfei.com/archives/print-cat-dog-fish-100
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# golang
goroutine 状态轮转
单例模式
  • 文章目录
  • 站点概览
Dante

Dante

119 日志
5 分类
5 标签
RSS
Creative Commons
0%
© 2023 Dante
由 Halo 强力驱动
|
主题 - NexT.Pisces v5.1.4
沪ICP备2020033702号