- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
在 go 中有返回两个或多个值的函数,通常一个是错误的。假设我想将第一个返回值存储到一个已经初始化的变量中,但我想初始化该变量以包含内联错误。有没有办法做到这一点?
例如,假设我有这段代码
var a int
//This code doesn't compile because err doesn't exist
a, err = SomeFuncWithTwoReturnValues()
//This code doesn't compile either
a, err := SomeFuncWithTwoReturnValues()
我知道你可以做到这一点,但我希望有一种方法可以内联
var a int
var err error
a, err = SomeFuncWithTwoReturnValues()
或
a, err := SomeFuncWithTwoReturnValues()
编辑:上面的代码实际上可以编译,所以我回顾了我的代码以深入了解并创建了一个实际复制问题的快速示例(不仅仅是在我的脑海中......)。
package main
func myfunc() (int, int) {
return 1, 1
}
func main() {
a := make([]int, 1)
a[0], b := myfunc()
a[0] = b
}
编译器说 main.go|9| :=
左侧的非名称 a[0]。如果我将其设为 =
而不是 :=
则永远不会创建 b 。我觉得没有速记方法可以做到这一点。
最佳答案
正如您在评论中提到的,您需要使用 =
运算符来分配给您已经声明的变量。 :=
运算符用于同时声明和分配变量。两者是一样的:
var x int
x = 5
//is the same as
x := 5
这个解决方案至少会编译:
package main
func myfunc() (int, int) {
return 1, 1
}
func main() {
var b int
a := make([]int, 1)
a[0], b = myfunc()
a[0] = b
}
要回答您的问题,我认为没有办法在返回多个值时同时使用未声明变量和已声明变量。那将试图同时使用两个不同的运算符。
编辑:刚刚从编译的代码中看到了您的示例,因此您似乎已经熟悉 go 的赋值运算符。无论如何,我会留下这个例子。
关于Go:为新旧变量分配多个返回值函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25083235/
在什么情况下我们应该在 JDK 8 中使用旧的 foreach 循环遍历新的 collection.forEach() 还是最好的做法是转换 every foreach 循环?是否存在任何重要的性能差
我想使用新的 CoraData 模型创建应用程序的新版本(由其他人创建)。我的疑问是:核心数据模型通过更新是永久的。我想确保以前的 CoreData 模型不会对新版本的应用程序产生问题。 我必须遵循一
我正在阅读“Dennis Ritchie 的 C 编程语言”,并且在一开始它演示了一个代码,即以下 #include main() { printf("Hello, World"); } 根据本书,这
首先,我知道这个问题在过去几年中在 Stack Overflow 上被提出过几次。问题是有时我会收到新的 PayPal 结帐页面,有时会收到旧页面。 我在沙盒中创建了两个测试帐户。第一个采用新设计,第
我在同一 Google Analytics(分析)帐户中有多个配置文件,但我发现新创建的配置文件的跟踪代码不同。它们会影响跟踪功能吗? 旧代码: var _gaq = _gaq || [];
我是一名优秀的程序员,十分优秀!