
package main
import(
"fmt"
// "time"
// "strconv"
//"runtime"
)
func writeDog(dogChan chan string){
dog := "dog"
for i:=1;i<=3;i++{
dogChan<- dog
}
close(dogChan)
}
func writeCat(catChan chan string){
cat := "cat"
for i:=1;i<=3;i++{
catChan<- cat
}
close(catChan)
}
func writeFish(fishChan chan string){
fish := "fish"
for i:=1;i<=3;i++{
fishChan<- fish
}
close(fishChan)
}
func main(){
//三个管道
dogChan := make(chan string ,3)
catChan := make(chan string ,3)
fishChan := make(chan string ,3)
//三个执行方法
go writeDog(dogChan)
go writeCat(catChan)
go writeFish(fishChan)
//打印值
for{
dog, ok := <-dogChan
if !ok{
break
}
fmt.Println("打印=》",dog)
}
//打印值
for{
cat, ok := <-catChan
if !ok{
break
}
fmt.Println("打印=》",cat)
}
//打印值
for{
fish, ok := <-fishChan
if !ok{
break
}
fmt.Println("打印=》",fish)
}
fmt.Println("主线程完毕")
}

最终按照要求输出结果
本文介绍了一个使用Go语言实现的简单并发模型案例。通过创建多个goroutine来模拟不同动物的输出行为,并利用channel进行数据传递与同步。具体展示了如何定义goroutine、使用channel以及如何在主goroutine中等待其他goroutine完成。

1735

被折叠的 条评论
为什么被折叠?



