go并发模式 错误处理
package main import ( "fmt" "net/http" ) type Results struct { Error error Response *http.Response } func main() { checkStatus := func(done <-chan interface{}, urls ...string) <-chan Results { results := make(chan Results) go func() { defer close(results) for _, url := range urls { resp, err := http.Get(url) result := Results{err, resp} select { case <-done: return case results <- result: } } }() return results } urls := []string{"http://www.google.com", "http://www.bing.com", "http://www.amazon.com", "http://qq.com", "http://facebook.com"} done := make(chan interface{}) defer close(done) errorCount := 0 for res := range checkStatus(done, urls...) { if res.Error != nil { errorCount++ if errorCount >= 2 { fmt.Println("too many errors,breaking!") break } fmt.Printf("error:%v\n", res.Error) continue } fmt.Printf("response status:%v\n", res.Response.Status) } }
【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://www.cnblogs.com/facetwitter/p/18293856
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具