登录
首页 >  Golang >  Go问答

具有多个返回值的方法的“if”初始化语句

来源:stackoverflow

时间:2024-04-03 11:09:38 419浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《具有多个返回值的方法的“if”初始化语句》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

我希望在 if 语句中包含初始化语句,该语句实际上使用多个返回多个值的方法。示例:

func handleargs(args ...interface{}) {
     // some additional checks here

     if value1, ok1, value2, ok2 := args[0].(string), args[1].(string); ok1 && ok2 {
          // do something
     }
}

go 不允许我这样做,响应错误:

赋值不匹配:4个变量但2个值

考虑到编译器可以轻松处理返回 2 个值的一个方法,这更令人困惑:

// it is OK!
if value, ok := args[0].(string); ok {
}

除了将一个 if 语句一分为二(这很难看)之外,还有什么方法可以做我想做的事吗?


解决方案


您不能使用上面的语法。

您可以像这样使用带花括号的范围。

func HandleArgs(args ...interface{}) {
    // Some additional checks here

    { 
        // This will ensure all values will be captured inside the following scope
        value1, ok1 := args[0].(string)
        value2, ok2 := args[1].(string)
        if ok1 && ok2 {
            // Do something
        }
    }
}

今天关于《具有多个返回值的方法的“if”初始化语句》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

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