初级会员
  • 第 6420 位会员
  • byssh1989
  • Bli
  • 2020-08-24 09:50:13
  • Offline
  • 20 25

最近发布的主题

    暂无

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 1. 软件不用纠结这个吧。毕竟“每纳秒执行2.229次”和“每纳秒执行0.2679次”根本没区别。何况不同硬件和不同操作系统下测试结果也不一定类似。 2. 有时候分配在栈上也不一定比分配堆上好吧。还是要看具体情况,栈上分配的对象大了或多了,还要触发栈扩容呢。
  • :+1:
  • **兄弟,我真是闲的跟你一样蛋疼……这东西真不好测试,为了获取到interface中的真实data地址,我也是头痛……** **经过各种google,终于在万能的stackoverflow上看到一个好办法……** 附上stackoverflow地址:https://stackoverflow.com/questions/57696977/how-to-get-a-pointer-to-the-underlying-value-of-an-interface-in-go 。 附上wide的测试代码地址:https://wide.b3log.org/playground/49b4de79f363ef7c1415d2372f972344.go
  • 小兄弟注意哈,使用go关键字 以goroutine方式执行后面的代码,就不能根据父协程的代码顺序来看谁先执行了。所以 go produce(ch) go consumer(ch) 这两行代码不能说明produce先被执行。更离谱的是,CPU使用单核执行的前提下,大多数机子上可能先执行consumer。
  • 评论了主题 关于defer
    1、a函数的定义中,定义了int类型的返回值(匿名,假设为 '-' );并在函数内部定义int类型的函数局部变量 i ;在a函数开始调用时,栈空间内首先被分配了返回值 - 的栈地址,函数a执行到 return i 时,栈空间中的局部变量 i 被赋值给返回值 - (此时变量i为0),之后执行defer调用的函数时仅仅改变了变量 i 的值而不会影响返回值 - 。 2、b函数的定义中,同样定义了int类型的返回值但给定了具体的命名。也就是说b函数中的变量 i 即为栈空间内分配的返回值变量,在执行到return i 时不需要做返回值赋值。所以执行defer调用的函数时改变变量 i 的值就是在改变返回值。