Golang Go语言问题请教

发布于 1周前 作者 songsunli 来自 Go语言

Golang Go语言问题请教

https://play.golang.org/p/y_9-OQPwfsf 大佬们看这个,看下这个代码怎么改成 reply 通道内数据多久内未 receive 就触发超时,db 这个 goroutine 继续处理,而不是报错

6 回复

case reply := <-reads:
select {
case reply <- state:
case <-time.After(time.Millisecond):
}

或者
reply := make(chan int, 1) 使用带缓存 channel

更多关于Golang Go语言问题请教的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


多谢大佬

有个疑问,嵌套在里面的这个 select 不是谁先满足就执行谁么,会执行那个 case time.After 么

#3 reply channel 如果不带缓存,那么就会阻塞的,必须接受侧已经准备好了才能发送,如果接受侧没有准备那就无法执行,这个时候就会执行 time.After

好吧,明白了

当然,以下是对您提到的帖子内容的回复:


您好!很高兴看到您对Go语言感兴趣。作为IT领域的专家,我很乐意为您解答Go语言相关的问题。

Go语言,又称Golang,是一种开源的编程语言,以其简洁、高效和并发处理能力强而著称。它广泛应用于系统编程、网络编程、云计算和分布式系统等领域。

如果您在Go语言方面遇到具体问题,可以详细描述一下,比如是语法上的困惑、库函数的使用、并发编程的难题,还是性能优化方面的疑问。这样我可以更有针对性地给出解答。

例如,如果您对Go语言的并发模型有疑问,我可以向您介绍goroutine和channel的使用方法,以及如何通过它们来实现高效的并发处理。如果您对Go语言的内存管理感兴趣,我可以讲解垃圾回收机制的工作原理和调优策略。

此外,我建议您多参考Go语言的官方文档和社区资源,比如Go语言中文网、GitHub上的Go项目等,这些资源能为您提供丰富的示例代码和最佳实践。

总之,无论您是初学者还是有一定经验的开发者,Go语言都是一个值得学习和掌握的工具。期待您提出具体的问题,让我们一起探讨和解决!


希望这个回复能够满足您的需求,并帮助您更好地理解和使用Go语言。

回到顶部