函数:延迟调用的使用和性能损耗

本文探讨Go语言中defer的使用,包括其执行机制和时机,如何在调用堆栈中终止执行,以及defer可能导致的性能损耗。尽管defer提供了方便,但在高并发和性能敏感的场景中,其潜在的性能问题不容忽视,需要权衡使用。
摘要由CSDN通过智能技术生成

3-18 延迟调用的使用和性能损耗

18 延迟调用(defer)执行机制和时机

还有一点所谓延迟调用的问题,我们知道返回一个匿名函数只是返回一个包装,但是并没有调用这个函数,这就存在延迟调用问题。

func closure() []func() {
    //动态切片当做数组
    var fs []func()

    for i := 0; i < 10; i++ {
        //添加10个匿名函数
        fs = append(fs, func() {
            fmt.Printf("%p: %v\n", &i, i)
        })
    }
    return fs
}

func closureFix() []func() {
    var fs []func()

    for i := 0; i < 10; i++ {
        x := i
        fs = append(fs, func() {
            fmt.Printf
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值