下面的总结是最近Golang开发中遇到的,和互联网上搜集到的坑,会持续更新:
字符串不是以
\x0
结束作为判断的无锁队列只是在单核下,多核同样需要锁,需要线程间调度
格式化时间字符串只能用
2006 01 02 15 04 05
(时间原点), 并且在time/format.go
写死了:2006-01-02T15:04:05Z07:00
其实这是有意义的,每个字段正好对应:
1 2 3 4 5 6 7 月 日 时 分 秒 年 时区
当多个channel都处于就绪状态时,激活channel是随机的,不能按照顺序判断
os.exit(1)
执行后,defer是没有作用的Goroutine只有非阻塞的IO调用阻塞时,才会发生Goroutine切换,如果是系统调用:
Golang会直接
启动内核级线程
,来实现异步。。。所以避免大量启动系统调用。。。内存泄漏的一个坑 如果你的代码中出现这样,恭喜你,你已经在坑里。
func somefunc() { for { // ... defer something.Cleanup() } }
原因是这里的defer没有机会被执行到。 简单的解决办法是将这里的逻辑放到一个方法中去。
有疑问加站长微信联系(非本文作者)