0
点赞
收藏
分享

微信扫一扫

GoLang之图解函数调用栈

您好 2022-05-06 阅读 50

文章目录

GoLang之图解函数调用栈

1.前言

image-20220306110502144

image-20220306110524776

2.理论知识

2.1函数调用栈结构

2.2函数调用栈状态变化

3.函数栈帧

在这里插入图片描述

image-20220306114606195

image-20220306114622536

image-20220306114644018

image-20220306111159849

func A() {
    var a1, a2, r1, r2 int64
    a1, a2 = 1, 2
    r1, r2 = B(a1, a2)
    r1 = C(a1)
    println(r1, r2)
}
func B(p1, p2 int64) (int64, int64) {
    return p2, p1
}
func C(p1 int64) int64 {
    return p1
}

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.返回值

func incr(a int) int {
    var b int
    
    defer func(){
        a++
        b++
    }()
    
    a++
    b = a
    return b
}
func main(){
    var a,b int
    b = incr(a)
    println(a,b) //0,1
}

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

func incr(a int) (b int) {
    defer func(){
        a++
        b++
    }()
    
    a++
    return a
}
func main(){
    var a,b int
    b = incr(a)
    println(a,b) //0,2
}

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.函数跳转与返回

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


func A(){
    a,b := 1,2
    B(a,b)
    return
}
func B(c,d int){
    println(c,d)
    return
}

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

举报

相关推荐

0 条评论