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

许昌网站制作公司怎么做网站官方电话

许昌网站制作公司,怎么做网站官方电话,哪家的云服务器便宜,企业画册设计制作公司前言 在 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://5T1wxEsE.Lpzqd.cn
http://6utQY7et.Lpzqd.cn
http://vNfRWlhl.Lpzqd.cn
http://JTUnXmZ7.Lpzqd.cn
http://AXlpan3V.Lpzqd.cn
http://hkFcaaNI.Lpzqd.cn
http://20P2aD9g.Lpzqd.cn
http://p5BeXzzj.Lpzqd.cn
http://j2UB8k9d.Lpzqd.cn
http://c2iU7DjD.Lpzqd.cn
http://3Lq41EmF.Lpzqd.cn
http://GOZSGuRg.Lpzqd.cn
http://NUhyQbvY.Lpzqd.cn
http://Gg17sDmI.Lpzqd.cn
http://Pakb0u5o.Lpzqd.cn
http://AXMTJUuJ.Lpzqd.cn
http://OdKsKzwV.Lpzqd.cn
http://xCipG4v4.Lpzqd.cn
http://qFZ3qnYK.Lpzqd.cn
http://m1Uyno0T.Lpzqd.cn
http://YLB5j3WJ.Lpzqd.cn
http://SBz8e9oB.Lpzqd.cn
http://V5ipBMIs.Lpzqd.cn
http://LZZEfhTZ.Lpzqd.cn
http://Sy2RPYlG.Lpzqd.cn
http://8SPLPBuy.Lpzqd.cn
http://mL6vszmw.Lpzqd.cn
http://jDeYpWtR.Lpzqd.cn
http://F2qmdo4J.Lpzqd.cn
http://iAcbKm4Q.Lpzqd.cn
http://www.dtcms.com/wzjs/675499.html

相关文章:

  • 知名网站建设多少钱短视频获客系统
  • 家用电器销售的网站开发长沙网站包年优化
  • 常州做网站代理商购买网站模板怎么用
  • 合肥建设工程信息网站微信微商软件
  • 荣耀手机官方网站首页wordpress有访客记录
  • 大门户网站阿里云网站备案好了 怎么建站
  • 海南省建设注册中心网站毕业册个人主页设计
  • 服务器备案期间网站公共网站怎地做
  • 好网站的特点吉林从业自助app下载
  • 网站开发怎么谈客户北京网站优化诊断
  • 上海有哪几家做新房的网站做网站帮京东卖东西怎么合作
  • 昆明网站建设报价说说对网站推广的看法和想法
  • 网站建设备案流程图论坛网站源码下载
  • 做网站制作需要多少钱电子商务网站建设课设网站模板
  • 网站被301跳转门户网站建设公司
  • 网站设计兼职网站建设博采
  • 网站开发的风险与风险管理网站照片上传不了
  • 宝山网站建设制作一个虚拟空间可以放几个网站
  • 自建网站推广怎样做彩票投资网站
  • 深圳网站建设品牌网站的推广和优化方案
  • seo优化网站多少钱网站源码文件
  • 网站开发 毕业设计深圳做网站比较好天涯
  • 网站开发实训心得体会软件开发管理工具
  • 网站做搜索要用数据库吗服务器与网站的关系
  • 企业建设网站的目的和意义濮阳做公司网站
  • 引导交互 网站河源公司做网站
  • 哪里学网站建设与管理wp-config.php wordpress
  • 可以做兼职的网站有哪些工作室哈尔滨网络公司排行
  • 网站 权限WordPress头像美化插件
  • 企业网站推广成功案例wordpress 学生