if-statement - 具有多个返回值的方法的“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 不允许我这样做,并以错误响应:
assignment mismatch: 4 variables but 2 values
考虑到编译器可以轻松处理一种返回 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
}
}
}
推荐阅读
- android - IdlingResource 未在 TestRule 中正确注册
- firebase - 如何使用 Flutter 删除 Firestore 中集合中的所有文档
- jquery - jQuery 方法的 JS 等效项
- r - 使用 purrr 在 R 中向量化 ode
- node.js - Node.js 中的 Twilio 和转录
- php - Symfony 4 - 如何使用多个实体嵌入表单?
- angularjs - 将 Angular js 应用程序嵌入到 3rd 方网站的最佳方法是什么?
- excel - 动态将两张纸合二为一
- php - .htaccess 包括 url 的旧部分
- oracle - 无法在 Oracle 查询中运行 DDL 语句