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

go: Coroutines Pattern

项目结构:

image

 

/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Coroutines Pattern  协程模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : goLang 2024.3.6 go 26.2
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/6/10 21:09
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : jewelry.go
*/
package domaintype Jewelry struct {ID          stringName        stringMaterial    stringStatus      stringCertificate string
}const (StatusPending    = "待采购"StatusPurchasing = "采购中"StatusPurchased  = "原料已到货"StatusChecking   = "质检中"StatusChecked    = "质检合格"StatusProcessing = "加工中"StatusProcessed  = "成品完成"StatusAuthing    = "鉴定中"StatusAuthed     = "已获证书"StatusSelling    = "销售中"StatusSold       = "已销售出库"
)/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Coroutines Pattern  协程模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : goLang 2024.3.6 go 26.2
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/6/10 21:10
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : config.go
*/
package configvar Delay = map[string]int{"Purchase": 2,"Check":    1,"Process":  3,"Auth":     2,"Sell":     1,
}/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Coroutines Pattern  协程模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : goLang 2024.3.6 go 26.2
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/6/10 21:10
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : logger.go
*/
package coreimport ("log""os"
)var Logger = log.New(os.Stdout, "[Jewelry] ", log.LstdFlags|log.Lmicroseconds)

  

/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Coroutines Pattern  协程模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : goLang 2024.3.6 go 26.2
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/6/10 21:11
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : purchase.go
*/
package serviceimport ("godesginpattern/coroutines/config""godesginpattern/coroutines/core""godesginpattern/coroutines/domain""time"
)func Purchase(j *domain.Jewelry) {j.Status = domain.StatusPurchasingcore.Logger.Printf("【采购】开始 %s | %s", j.ID, j.Name)time.Sleep(time.Duration(config.Delay["Purchase"]) * time.Second)j.Status = domain.StatusPurchasedcore.Logger.Printf("【采购】完成 %s", j.ID)
}/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Coroutines Pattern  协程模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : goLang 2024.3.6 go 26.2
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/6/10 21:12
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : check.go
*/
package serviceimport ("godesginpattern/coroutines/config""godesginpattern/coroutines/core""godesginpattern/coroutines/domain""time"
)func Check(j *domain.Jewelry) {j.Status = domain.StatusCheckingcore.Logger.Printf("【质检】开始 %s", j.ID)time.Sleep(time.Duration(config.Delay["Check"]) * time.Second)j.Status = domain.StatusCheckedcore.Logger.Printf("【质检】完成 %s", j.ID)
}/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Coroutines Pattern  协程模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : goLang 2024.3.6 go 26.2
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/6/10 21:12
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : process.go
*/
package serviceimport ("godesginpattern/coroutines/config""godesginpattern/coroutines/core""godesginpattern/coroutines/domain""time"
)func Process(j *domain.Jewelry) {j.Status = domain.StatusProcessingcore.Logger.Printf("【加工】开始 %s", j.ID)time.Sleep(time.Duration(config.Delay["Process"]) * time.Second)j.Status = domain.StatusProcessedcore.Logger.Printf("【加工】完成 %s", j.ID)
}/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Coroutines Pattern  协程模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : goLang 2024.3.6 go 26.2
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/6/10 21:12
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : auth.go
*/
package serviceimport ("godesginpattern/coroutines/config""godesginpattern/coroutines/core""godesginpattern/coroutines/domain""time"
)func Auth(j *domain.Jewelry) {j.Status = domain.StatusAuthingcore.Logger.Printf("【鉴定】开始 %s", j.ID)time.Sleep(time.Duration(config.Delay["Auth"]) * time.Second)j.Certificate = "NGTC-" + j.ID + "-AUTH"j.Status = domain.StatusAuthedcore.Logger.Printf("【鉴定】完成 %s | 证书: %s", j.ID, j.Certificate)
}/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Coroutines Pattern  协程模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : goLang 2024.3.6 go 26.2
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/6/10 21:13
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : sell.go
*/
package serviceimport ("godesginpattern/coroutines/config""godesginpattern/coroutines/core""godesginpattern/coroutines/domain""time"
)func Sell(j *domain.Jewelry) {j.Status = domain.StatusSellingcore.Logger.Printf("【销售】开始 %s", j.ID)time.Sleep(time.Duration(config.Delay["Sell"]) * time.Second)j.Status = domain.StatusSoldcore.Logger.Printf("【销售】完成 %s", j.ID)
}/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Coroutines Pattern  协程模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : goLang 2024.3.6 go 26.2
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/6/10 21:13
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : flow.go
*/
package workflowimport ("godesginpattern/coroutines/core""godesginpattern/coroutines/domain""godesginpattern/coroutines/service"
)// 异步协程全流程(Go 原生 goroutine + channel)
func RunFlow(j *domain.Jewelry, done chan bool) {core.Logger.Printf("===== 启动流程 %s | %s =====", j.ID, j.Name)// 协程异步执行(可暂停、可恢复、非阻塞)service.Purchase(j)service.Check(j)service.Process(j)service.Auth(j)service.Sell(j)core.Logger.Printf("===== 全部完成 %s | 状态: %s =====", j.ID, j.Status)done <- true
} 

调用:

/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Coroutines Pattern  协程模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : goLang 2024.3.6 go 26.2
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/6/10 21:15
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : coroutinesbll.go
*/
package bllimport ("godesginpattern/coroutines/domain""godesginpattern/coroutines/workflow"
)func CoroutinesMain() {// 创建3件珠宝(和Python版完全一样)jewelryList := []*domain.Jewelry{{ID: "J001", Name: "18K金钻石项链", Material: "黄金+钻石", Status: domain.StatusPending},{ID: "J002", Name: "冰种翡翠手镯", Material: "翡翠", Status: domain.StatusPending},{ID: "J003", Name: "铂金戒指", Material: "铂金", Status: domain.StatusPending},}// 异步协程并发执行(Go 高并发核心)done := make(chan bool, len(jewelryList))for _, j := range jewelryList {go workflow.RunFlow(j, done) // 启动协程!}// 等待全部完成for range jewelryList {<-done}close(done)
}

  

输出:

image

 

http://www.jsqmd.com/news/988173/

相关文章:

  • 告别LaTeX图片阴影:实测PDFCrop与Acrobat DC组合拳,附保姆级命令行操作
  • 实战避坑:在RuoYi-Vue-Plus 3.5.0中集成Mybatis-Plus多租户插件,我踩过的那些坑
  • 青岛老旧小区楼顶漏水找哪家公司维修最靠谱?楼长修楼|政企共建老牌头部,专治老楼疑难漏水 - 青岛防水品牌推荐
  • 告别电平不匹配!手把手教你用TXS0108E搞定3.3V与5V单片机通信(附电路图)
  • MuleSoft企业级AI编排:LLM集成的治理、安全与成本控制
  • 专业科普・青岛买狗避坑指南:为什么本地人都推荐朋博猫舍犬舍 - 同城宠物优选基地
  • SolidWorks新手避坑指南:从草图变蓝到装配体配合,这10个常见问题我帮你踩过了
  • AT2018cow激波辐射模型解析:从X射线到光学的多波段观测
  • 2026年浙江保健品包装设计公司推荐榜:视觉赋能、合规与品牌溢价并重的创意包装方案精选 - 品牌发掘
  • AWS架构师备考核心:从服务记忆到约束求解的思维跃迁
  • 2026年广东安保服务公司推荐榜单:工厂/学校/银行/商场/临时安保与安保巡逻优质企业深度解析 - 企业推荐官【官方】
  • 2026广州配眼镜一般什么价位,套餐方案明细 - 配眼镜新资讯
  • 居顺联家政疏通服务|陆家嘴金融区专职下水道疏通师傅专属介绍 - 居顺联家政疏通
  • 别再为Elsevier投稿格式发愁了!手把手教你搞定LaTeX通用模板(附常见编译错误解决)
  • 从LabVIEW到MATLAB:振动信号分析迁移实战,附半功率法求阻尼的完整代码与避坑指南
  • 用StandardScaler做机器学习数据预处理?小心这个‘隐藏’的数据泄露陷阱!
  • 广州配眼镜防坑攻略,门店怎么挑才靠谱 - 配眼镜新资讯
  • 2026年6月最新版来宾第三方CMACNAS甲醛检测治理机构口碑名单:万清CMA检测中心等5家公司深度测评万清CMA检测中心TOP1推荐 - 一休咨询
  • 手把手调优UWB接收机:避开Cicada攻击,平衡802.15.4z HRP模式的性能与安全
  • 从日志小白到分析高手:用Splunk SPL搜索语句玩转你的第一份服务器日志
  • 从Kaggle到生产:XGBoost参数调优避坑指南(附房价预测实战代码)
  • 2026 青少年控油爽肤水横评:专注水油平衡与屏障养护,打造青春期健康肤质 - 19120507004
  • 格兰头优质厂家选型推荐:行业深度解析、标准化选型维度与五大厂商量化测评 - 星城方舟
  • 膨胀管厂家深度甄选指南:行业分析 + 多维打分优选 5 家靠谱生产厂商 - 星城方舟
  • 楼长修楼防水修缮正常质保年限是多久?官方质保标准+售后体系+真实履约案例详解 - 青岛防水品牌推荐
  • 信号处理避坑指南:MATLAB FFT分析锤击响应时,90%的人会忽略的这3个细节
  • 从点亮LED灯开始:手把手教你用DNW给FS4412开发板下载第一个程序
  • MuleSoft企业级AI编排:LLM生产化落地的合规底座与工程实践
  • 别再踩坑了!用ESP32和PlatformIO驱动SC7A20加速度计的完整流程(附开源库)
  • 2026年6月最新版丽水第三方CMACNAS甲醛检测治理机构口碑名单:万清CMA检测中心等5家公司深度测评万清CMA检测中心TOP1推荐 - 一休咨询