登录
首页 >  Golang >  Go问答

我可以在 Go/Golang if 块的开头使用具有多个返回值的多个函数初始化多个变量吗?

来源:stackoverflow

时间:2024-04-12 17:42:27 124浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《我可以在 Go/Golang if 块的开头使用具有多个返回值的多个函数初始化多个变量吗?》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

我正在尝试使用两个函数来初始化 if 块内的变量。 这两个函数都返回一个布尔值和一个错误。 我尝试过以下方法,但没有成功。有办法做我想做的事吗?

func returnAValueAndError() (bool, error) {
    return true, nil
}

func alsoReturnAValueAndError() (bool, error) {
    return false, nil
}

if a, _ := returnAValueAndError(), b, _ := alsoReturnAValueAndError(); a || b {
//    this gives me
//    ./prog.go:16:42: syntax error: unexpected :=, expecting {
}

if a, _ := returnAValueAndError(); b, _ := alsoReturnAValueAndError(); a || b {
//    this gives me
//    ./prog.go:16:42: syntax error: cannot use b, _ := alsoReturnAValueAndError() as value
//    ./prog.go:17:38: syntax error: unexpected newline, expecting comma or }
}

if a, _, b, _ := returnAValueAndError(), alsoReturnAValueAndError(); a || b {
//    this gives me
//    ./prog.go:16:16: assignment mismatch: 4 variables but returnAValueAndError returns 2 values
//    ./prog.go:16:39: multiple-value returnAValueAndError() in single-value context
//    ./prog.go:16:67: multiple-value alsoReturnAValueAndError() in single-value context
}

解决方案


你不能这么做。条件前面可以有一个简单的语句(不能是多个语句):

https://golang.org/ref/spec#If_statements

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>