gpt4 book ai didi

Go:为新旧变量分配多个返回值函数

转载 作者:IT老高 更新时间:2023-10-28 13:03:57 24 4
gpt4 key购买 nike

在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com