教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 golang 中的 defer

golang 中的 defer

发布时间:2023-03-01   编辑:jiaochengji.com
教程集为您提供golang 中的 defer等资源,欢迎您收藏本站,我们将为您提供最新的golang 中的 defer资源

defer 是在return 之前执行的
但是return xxx 并不是一条原始指令

package main

import (
    "fmt"
)

// my : 1
// res : 1
func f1() (result int) {
    defer func() {
        result  
    }()
    return 0
}

// my : 10
// res : 5 -- 我误判的原因, t为局部变量了. defer 影响的是局部变量 t.
//         -- r在return的时候已经拷贝赋值了.
func f2() (r int) {
    t := 5
    defer func() {
        t = t   5
    }()
    return t
}

// my : 1
func f3() (r int) {
    defer func(r int) {
        r = r   5
    }(r)
    return 1
}

func main(){
    // return xxx这一条语句并不是一条原子指令!
    // 先给返回值赋值,然后调用defer表达式,最后才是返回到调用函数中。
    a := f1()
    b := f2()
    c := f3()
    fmt.Println(a)
    fmt.Println(b)
    fmt.Println(c)
}

到此这篇关于“golang 中的 defer”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
golang中defer执行时机与常见问题
golang中defer
Go中defer的延迟调用
Go语言中defer的一些坑
Defer
Golang学习笔记之延迟函数(defer)
go defer
Golang中的defer、recover、panic
Golang defer 你不知道的事
golang中的defer recover panic

[关闭]
~ ~