golang
文章平均质量分 87
黄杨峻
这个作者很懒,什么都没留下…
展开
-
golang踩坑--defer知多少
defer语句能延迟函数的执行,直到周围的函数return。在业务代码流程中,无论函数逻辑多复杂,开发者使用defer字段,都可以保证在任何执行路径下,资源被释放,可以不关心语句何时结束,只需要在资源正常打开后,加上defer关闭语句即可。2. 可用于panic recover需要注意的是,recover只能在defer函数中使用,且必须与出发panic的协程位于同一个协程。如果panic在不同协程中,recover是无法恢复的。如下例子3. defer的参数会在执行前确定这个特性可以用于制作计原创 2022-07-08 21:30:41 · 391 阅读 · 0 评论 -
golang踩坑--channel的正确使用姿势
一、为什么要用channel笔者也是从Java转Go的选手,之前一直很难摆脱线程池、可重入锁、AQS等数据结构及其底层的思维定式。而最近笔者也开始逐渐回顾过往的实习和实验,慢慢领悟了golang并发的一些经验了。golang在解决并发race问题时,首要考虑的方案是使用channel。可能很多人会喜欢用互斥锁sync.Mutex,因为mutex lock只有Lock和Unlock两种操作,与Java中的ReentrantLock比较类似。但笔者实践过程中发现:互斥锁只能做到阻塞,而无法让流程之间通信原创 2022-02-06 18:47:35 · 2199 阅读 · 0 评论