Golang中的各种坑(持续更新)

Comments(1)


Posted on 2014-03-05 22:44:56 golang


下面的总结是最近Golang开发中遇到的,和互联网上搜集到的坑,会持续更新:

  1. 字符串不是以\x0结束作为判断的

  2. 无锁队列只是在单核下,多核同样需要锁,需要线程间调度

  3. 格式化时间字符串只能用2006 01 02 15 04 05(时间原点), 并且在time/format.go写死了:

    2006-01-02T15:04:05Z07:00

    其实这是有意义的,每个字段正好对应:

    1 2 3 4 5 6 7
        
    月 日 时 分 秒 年 时区
    
  4. 当多个channel都处于就绪状态时,激活channel是随机的,不能按照顺序判断

  5. os.exit(1)执行后,defer是没有作用的

  6. Goroutine只有非阻塞的IO调用阻塞时,才会发生Goroutine切换,如果是系统调用:

    Golang会直接启动内核级线程,来实现异步。。。所以避免大量启动系统调用。。。

  7. 内存泄漏的一个坑 如果你的代码中出现这样,恭喜你,你已经在坑里。

    func somefunc() {
        for {
            // ...
            defer something.Cleanup()
        }
    }
    

    原因是这里的defer没有机会被执行到。 简单的解决办法是将这里的逻辑放到一个方法中去。

前一篇: 发送邮件提示 551 User not local; please try 错误信息的原因及解决 后一篇: http-parser使用简介

Captcha:
验证码

Email:

Content: (Support Markdown Syntax)


ownthewin  2023-08-19 09:07:45 From 127.0.0.1

Provides world-class entertainment and supports the recognition of the Philippines’ aspiring athletes!!! Want to know more about the site? visit here —>> online casino games