专栏首页高性能分布式系统设计Go的defer和方法修饰符的一个小坑

Go的defer和方法修饰符的一个小坑

先看代码:

https://play.golang.org/p/GlM23bSW6zf

可见:

1. for 循环变量只有一份 

2. 单行的defer和go都是在当前时刻求值。

    如果方法的修饰符是一个指针,那么求值得到的必报是保存了这个指针的值的,如果指针指向内存发生变化,后续取得的数据也会变。

    如果方法的修饰符是一个对象,那么单行的defer和go在求值时刻,会保存这个对象,无论后续这个对象怎么变,取得数值是不变的。

3. 如果是 go/defer 后面跟一个 func()的形式,那么func()内部代码捕获的外部变量都是指针引用,我之前的Blog已经有详述,这里不再重复。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 怎样判断iPhone/iPad是越狱的

    对开发者来说,越狱机盗版开发者的成果是一个灾难。 下面介绍一个方法来检测: 破解程序会在 Info.plist 加入 SignerIdentity 这个 KEY...

    Linker
  • Go语言可用几种消息通讯方案

    mangos  基于SP/nanomsg 协议,比较难用。 ProtoActor 类似Erlang的实现,比较新,完备度较低,但是性能还不错。 最近又多了一个选...

    Linker
  • 如何把Go调用C的性能提升10倍?

    目前,当Go需要和C/C++代码集成的时候,大家最先想到的肯定是CGO。毕竟是官方的解决方案,而且简单。 但是CGO是非常慢的。因为CGO其实一个桥接器,通过自...

    Linker
  • Live 回顾 | 柏视医疗创始人:从 AI 入手,如何解决鼻咽癌放疗靶区勾画的临床痛点?

    1月9日,2019年首场【大咖Live】第 31 期AI医疗·放疗靶区勾画专场首期,雷锋网AI掘金志邀请到柏视医疗创始人陆遥博士详细解析“鼻咽癌放疗临床靶区勾画...

    AI掘金志
  • AAC---WorkManager

    WorkManager目前还在Alpha阶段,还存在一些问题。不过等后续Release后,又是开发的一大助力。

    None_Ling
  • 动态图表7|组合框(index函数)

    今天跟大家分享动态图表7——组合框(index函数)! 组合框制作图表,其步骤与列表框相同,唯一的不同点在于,组合框控件,提供用于选择的下拉菜单,在未选择的情况...

    数据小磨坊
  • OC中获取一串字符串的高度(宽度确定)或宽度(高度确定)

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

    用户1451823
  • 在Android Studio中配置Gradle做到 “根据命令行提示符生成指定versionCode, versionName,指定apk的打包输出路径”

    1. 使用 Android studio ,使用 gradle 进行构建   2. 在实际开发中,我们需要使用jenkins进行打包。就需要配置我们的 gra...

    zhangyunfeiVir
  • IntelliJ IDEA 超实用使用技巧分享

    来源:juejin.im/post/5d47f4e851882534d152a206

    java思维导图
  • 刘敏洁:API网关和SCF深度结合应用

    这次我们主要介绍面向于API网关和SCF深度结合应用,API网关与SCF结合可以形成比较完整的Serverless方案。

    云加社区技术沙龙

扫码关注云+社区

领取腾讯云代金券