【GO】go语言中return语句可以带返回值,也支持不带返回值

return
go语言中return语句可以带返回值,也支持不带返回值。下面是不带返回值的一些问题。

1、前言
下面这段话来自《Go语言程序设计》p146
可以在有一到多个命名返回值的函数中,写无需声明返回值的return语句。这种情况下,返回值将是命名的返回值,它们在函数入口处被初始化为其类型的零值,并且可以在函数体通过赋值语句来改变它们。
比如下面这个例子:

func main(){
    a, b := returnTest()
    fmt.Println(a, b)
}
func returnTest()(a int64, b int64){
    //直接赋值
    a = 1
    b = 2
    //直接返回,无需声明返回值
    return
}
结果

1, 2
1
如果不赋值,函数内就一个return语句,结果为

0, 0
1
2、问题
在上面例子的基础上修改

func main(){
    a, b := returnTest()
    fmt.Println(a, b)
}
func returnTest()(a int64, b int64){
    //直接赋值
    a = 1
    b = 2
    
    //1、下面这个if语句正常
    if true{
        a := 3
        b := 4
    }
    
    /*
        2、下面这个if语句报错
        报错类型有两种:
        result parameter a not in scope at return
        inner declaration of var a int64
        (对变量b也报同样的错误)
    */
    if true{
        a := 3
        b := 4
        return
    }
    
    //3、下面这个if语句正常,并且函数返回3, 4
    if true{
        a := 3
        b := 4
        return a, b
    }
    //直接返回,无需声明返回值
    return
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值