《Go语言高级编程》读书笔记

附录A:Go语言常见的坑

  1. 可变参数是空接口类型时,需要注意参数展开的问题
  2. 数组是值传递,所以函数内的修改无法体现。
  3. map遍历时返回顺序不固定,不能依赖map的返回顺序。
  4. 局部作用域中,返回值会被同名的局部变量屏蔽。
  5. recover必须在defer函数中进行,并且捕获的只能是祖父级函数的异常。
  6. main函数提前退出时,后台goroutine无法保证完成任务。
  7. 不能通过sleep来回避并发中的问题
  8. 独占CPU会导致其他goroutine饿死,需要用runtime.Gosched()来让渡CPU。
  9. 不同goroutine之间不满足顺序一致性内存模型
  10. 闭包错误引用同一个变量
  11. 在循环内部执行defer语句,会导致资源延迟释放
  12. 切片会导致整个底层数组被锁定,底层数组较大时,会对内存产生很大压力。
  13. 空指针和空接口不等价。
  14. 内存地址会变化。
  15. Goroutine泄露,可以用context包来避免。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值