函数:函数的多返回值

本文详细介绍了Go语言中函数的多返回值机制,包括如何使用命名返回值,以及命名返回值与普通返回值的区别。讨论了命名返回值的内存分配、生命周期,以及如何避免名称遮蔽问题。同时,文章提到了在函数中是否必须使用return语句的情况,以及return语句的执行顺序与defer的关系。
摘要由CSDN通过智能技术生成

函数:多返回值

//go:noinline
func test(x int) (int, int) {
    return x + 1, x + 2
}
func main() {
    a, b := test(100)
    println(a, b)
}
$ go build && go tool objdump -s "main\.main" test

函数提供多返回值。多返回值在语法上接近于 Python,在实现上方式上不一样。Python 多返回值实际上打包成一个元组返回,在语法上展开,元组是单个对象。Go 语言的确返回两个返回值,我们需要分配两个返回值区域内存。

调用CALL main.test的时候,100参数进去MOVE $0x64, 0(SP),接下来分别从0x8(SP)0x10(SP)取了两次的数据,分别保存到0x20(SP)0x18(SP)。所以函数有多个返回值,调用的时候,首先参数是 100,两个空间用来保存两个返回值。

函数:命名返回值

//go:noinline
func test() (x int) {
    x = 100
    return
}
</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值