gpt4 book ai didi

logging - 在 Go 中记录多个返回值

转载 作者:IT王子 更新时间:2023-10-29 01:39:54 26 4
gpt4 key购买 nike

是否有一种惯用的方法来记录返回多个值的函数的结果?这不会编译:

import "log"
func returnPair() (int,int) {
return 42, 24
}
func main() {
log.Printf("Returned %v", returnPair())
}

prog.go:7: multiple-value returnPair() in single-value context

UPD 摘要(特别感谢@rvignacio):

这是 Go 语法的一个特点:

func eat(args ...interface{}) {}

func eatWithSpice(spice string, args ...interface{}) {}

func main() {
eat(returnPair()) // this works
eatWithSpice("pepper", returnPair()) // this does not
}

作为一种特殊情况,如果函数或方法 g 的返回值在数量上相等并且可单独分配给另一个函数或方法 f 的参数,则调用 f(g(parameters_of_g)) 将调用f 在按顺序将 g 的返回值绑定(bind)到 f 的参数之后。 f 的调用除 g 的调用外不得包含任何参数,并且 g 必须至少有一个返回值。如果 f 有一个 final ... 参数,它会被分配 g 的返回值,这些返回值在分配常规参数后仍然存在。 ( http://golang.org/ref/spec#Calls )

最佳答案

您可以先分配那些返回值:

a, b := returnPair()
log.Printf("Returned %d %d", a, b

您可以在“Multiple return values from Go functions”中查看示例。

虽然在 Println 中直接使用多个返回值是可行的(因为它接受 variadic parameters ):

在您的情况下:play.golang.org

package main

import "log"

func returnPair() (a int, b int) {
return 42, 24
}
func main() {
log.Println(returnPair())
}

输出:

2009/11/10 23:00:00 42 24

关于logging - 在 Go 中记录多个返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25044309/

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