gpt4 book ai didi

go - 命名从多返回函数接收变量

转载 作者:数据小太阳 更新时间:2023-10-29 03:40:22 25 4
gpt4 key购买 nike

Go 允许多个命名的返回值,但是接收变量呢?当返回值变来变去时,它们是否受到保护?

假设我们从这个开始:

func foo() (i int, j int) {
i = 1
j = 2
return
}

a, b := foo()

现在,如果有其他编码员过来并对 foo 的定义进行以下更改会怎样:

func foo() (j int, i int) {

我的调用函数无效。那么,是否也可以从调用方命名返回值。例如,如果我这样调用它:

(a:i, b:j) := foo()

然后我会将它们附加到指定的返回值,而不是按照返回的顺序分配它们。

那么,有没有办法解决这个问题呢?

最佳答案

这与重新排列输入参数没有什么不同。通常,除非您打算进行重大更改,否则不要这样做。但是如果你想通过名称而不是位置来处理事物,你需要一个结构。例如,您可以使用匿名结构:

func foo() struct {
i int
j int
} {
return struct {
i int
j int
}{1, 2}
}

func main() {
result := foo()
fmt.Println(result.i, result.j)
}

当然如果你在其他地方使用struct也可以命名,但是如果你只是想命名字段就没有必要。

关于go - 命名从多返回函数接收变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57116837/

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