美文网首页
go 函数调用机制

go 函数调用机制

作者: StevenQin | 来源:发表于2019-02-26 15:19 被阅读0次

函数调用机制

  • 示例
package main
import (
    "fmt"
)
func test(n1 int) {
    n1 = n1 + 1
    fmt.Println("test() n1=", n1)
}
func main() {
    n1 := 10
    //调用test
    test(n1)
    fmt.Println("main() n1=", n1)
}
  • 运行说明


总结:
1、在调用一个函数时,会给该函数分配一个新的空间。编译器通过自身的处理让这个空间和其它栈区分开
2、在每个函数对应的栈中,数据空间是独立的,不会混淆。(引用类型除外)
3、当一个函数调用完毕(执行完毕)后,程序会销毁这个函数对应的栈空间

return语句

Go函数支持返回多个值,其它语言没有

func 函数名 (形参列表) (返回值类型列表){
   执行语句...
   return 返回值列表
}

1、如果返回多个值时,在接收时,希望忽略某个返回值,则使用_符号
2、如果返回值只有一个,(返回值类型列表)可以不写()

  • 案例:编写一个函数,计算两个数的,并返回两个结果
package main

import (
    "fmt"
)

func getSumAndSub(n1 int, n2 int) (int, int) {
    sum := n1 + n2
    sub := n1 - n2
    return sum, sub
}
func main() {
    //调用
    res1, res2 := getSumAndSub(1, 2)
    fmt.Printf("res1=%v,res2=%v\n", res1, res2)
    //只取第二个返回值 第一个用 _ 来省略
    _, res3 := getSumAndSub(7, 4)
    fmt.Println("res3=", res3)
}

相关文章

  • go 函数调用机制

    函数调用机制 示例 运行说明 总结:1、在调用一个函数时,会给该函数分配一个新的空间。编译器通过自身的处理让这个空...

  • C 调用 Go 函数

    我们之前已经让 Go 调用 C 函数,但有些场景下需要 C 来调用Go函数。 Go 使用 export 关键字导出...

  • go/defer

    defer使用 defer是Go语言提供的一种用于注册延迟调用的机制:让函数或语句可以在当前函数执行完毕后(包括通...

  • 一文了解defer操作

    什么是defer? defer是go语言提供的一种用于注册延迟调用的机制,让函数或语句可以在当前函数执行完毕后(包...

  • go defer温柔陷阱

    一、什么是defer? defer是Go语言提供的一种用于注册延迟调用的机制:让函数或语句可以在当前函数执行完毕后...

  • 第02天(函数、工程管理)_02

    06_多个返回值.go 07_有参有返回值.go 08_普通函数的调用流程.go 09_函数递归调用的流程.go ...

  • Linux boot的第一步:启动汇编调用main函数

    为了讲清原理,我们首先介绍C函数调用机制,然后再介绍汇编调用C函数。 一、C函数调用机制 对于汇编中的函数,其使用...

  • GO语言学习笔记5-defer的使用

    1.什么是defer defer是Go语言提供的一种用于注册延迟调用的机制:让函数或语句可以在当前函数执行完毕后(...

  • GO调用C函数

    GO调用C函数 在很多场景下,在Go的程序中需要调用c函数或者是用c编写的库(底层驱动,算法等,不想用Go语言再去...

  • Go函数-延迟调用(三)

    在go语言里,defer可是实现延迟函数调用。语句defer向当前函数注册稍后执行的函数调用。这些调用被称做延迟调...

网友评论

      本文标题:go 函数调用机制

      本文链接:https://www.haomeiwen.com/subject/ocyayqtx.html