当前位置: 首页 > wzjs >正文

电影网站内页360推广和百度推广哪个好

电影网站内页,360推广和百度推广哪个好,网站做多个单页链接,做网站的公司哪里好前言 在 Go 语言中,goroutine 是轻量级的并发执行单元,它使得我们能够非常方便地实现并发编程。本文将通过一个经典的案例 —— 使用两个 goroutine 交替打印数字和字母,来演示如何利用 channel 控制 goroutine 的执行顺序,并加深…

前言

在 Go 语言中,goroutine 是轻量级的并发执行单元,它使得我们能够非常方便地实现并发编程。本文将通过一个经典的案例 —— 使用两个 goroutine 交替打印数字和字母,来演示如何利用 channel 控制 goroutine 的执行顺序,并加深对 Go 并发模型的理解。

🎯 题目描述

编写一个 Go 程序,使用两个 goroutine:

一个 goroutine 打印数字 1~26;
另一个 goroutine 打印字母 ‘A’~‘Z’;
要求输出结果为:
深色版本
1 2 A 3 4 B 5 6 C … 25 26 Z
即每打印两个数字后打印一个字母,形成交错输出的效果。

🧠 解题思路

要实现两个 goroutine 按照一定顺序交替执行,关键在于控制执行流程。我们可以借助 Go 的 channel 实现同步通信机制:

使用两个 channel:numChan 和 letterChan,分别用于通知打印数字和字母;
主 goroutine 控制初始信号;
每个 goroutine 打印完相应内容后发送下一个 goroutine 的信号;
使用计数器控制循环结束。

✅ 完整代码实现

package mainimport ("fmt""time"
)func main() {numChan := make(chan struct{})letterChan := make(chan struct{})done := make(chan struct{})// 数字 goroutinego func() {for i := 1; i <= 26; i += 2 {// 等待打印两个数字的信号<-numChan// 打印两个数字fmt.Printf("%d %d ", i, i+1)// 发送打印字母的信号letterChan <- struct{}{}}close(letterChan)done <- struct{}{}}()// 字母 goroutinego func() {for ch := 'A'; ch <= 'Z'; ch++ {// 等待打印字母的信号<-letterChan// 打印一个字母fmt.Printf("%c ", ch)// 如果还没到结尾,通知继续打印下一组数字if ch != 'Z' {numChan <- struct{}{}} else {done <- struct{}{}}}}()// 启动第一个信号numChan <- struct{}{}// 等待所有任务完成<-done<-donefmt.Println("\n程序结束")
}

🔍 运行结果示例

1 2 A 3 4 B 5 6 C 7 8 D 9 10 E 11 12 F 13 14 G 15 16 H 17 18 I 19 20 J 21 22 K 23 24 L 25 26 Z

程序结束

🛠️ 代码解析

  1. Channel 的作用
    numChan: 控制是否可以打印数字(初始由主 goroutine 触发);
    letterChan: 控制是否可以打印字母;
    done: 用于主 goroutine 等待子 goroutine 结束。
  2. 执行流程
    主 goroutine 发送第一个信号给 numChan,启动数字打印;
    数字 goroutine 打印两个数字后,发送信号给 letterChan;
    字母 goroutine 收到信号后打印一个字母,并再发送信号给 numChan;
    循环往复,直到全部数据打印完毕;
    最终主 goroutine 接收到 done 信号,程序退出。

🧪 小技巧

在实际开发中,可以通过 time.Sleep() 模拟延迟,观察 goroutine 执行顺序;
如果希望更清晰地看到输出,可以在打印语句中加入换行或空格;
使用 sync.WaitGroup 替代 done channel 也是常见做法。

📚 扩展练习建议

使用 WaitGroup 替代 done channel;
修改题目要求为:打印一次数字后打印两次字母;
尝试使用 context.Context 控制 goroutine 的取消操作;
封装成函数,支持任意数量的交替规则;

📝 总结

通过这个小例子,我们学习了以下 Go 并发编程的核心知识点:

技术点应用场景说明
Goroutine并发执行多个任务
Channel协调 goroutine 之间的执行顺序
主 goroutine 等待确保程序不会提前退出
http://www.dtcms.com/wzjs/445864.html

相关文章:

  • 做网站服务器是必须购买的吗人员优化是什么意思
  • 刷网站排名软件线上商城推广软文
  • 龙岗网站建设公司百度推广优化怎么做的
  • 物联网技术应用专业是学什么的学seo网络推广
  • 自己怎么做农好产品网站seo自动工具
  • 怎么查看网站disallowaso推广优化
  • 连云港网站建设方案国际时事新闻
  • 有口碑的徐州网站建设搜索引擎技术
  • 南宁疫情封路最新消息官网优化哪家专业
  • 网站做301重定向怎么做2024年1月新冠高峰期
  • 一家做土产网站西点培训学校
  • 如何优化移动端网站口碑营销什么意思
  • 免费网站建设阿里云合肥seo培训
  • 最讨厌网站网站结构优化的内容和方法
  • 宁波网站建设推广公司重庆百度快照优化排名
  • 网站桥页怎么找郑州网站建设制作公司
  • 做网站要费用多少网站seo基本流程
  • 网站开发 动易友情链接平台广告
  • 山东电力建设河北分公司网站在线培训
  • 做照片书的网站好谷歌浏览器搜索引擎入口
  • 自己做网站转发新闻违法么网络运营推广是做什么的
  • 单位做网站的目的设计个人网站
  • 自定义wordpress维护页面当阳seo外包
  • 青岛网站建设市场自己做一个网站需要什么
  • 互站网官网海外网站建站
  • 怎样建个人网站百度北京总部电话
  • 网站评论区怎么做阳江网站建设
  • 企业网站营销解决方案seo关键词的选择步骤
  • wordpress发不出注册邮件广州网站优化方案
  • 个人备案的域名拿来做别的网站百度商城官网