在 Go 中,一个函数可以返回多个值。但是,默认情况下,无法在调用 fmt.Println() 时直接将函数的返回值分配给格式字符串。
来实现为了实现所需的行为,应使用 fmt.Printf() 而不是 fmt.Println()。但是,可变参数函数调用规范不允许在函数调用之外传递其他参数。
要绕过此限制,可以使用包装函数。 wrap() 函数接受多个值并将它们作为interface{} 值的切片返回。这允许我们将至少有一个返回值的任何函数的返回值传递给 fmt.Printf()。
package main import ( "fmt" ) // Wrapper function to convert multiple values to a slice of interface{} func wrap(vs ...interface{}) []interface{} { return vs } func main() { fmt.Printf("1: %v\n", wrap(oneInt())...) fmt.Printf("1: %v, 2: %v\n", wrap(twoInts())...) fmt.Printf("1: %v, 2: %v, 3: %v\n", wrap(threeStrings())...) } func oneInt() int { return 1 } func twoInts() (int, int) { return 1, 2 } func threeStrings() (string, string, string) { return "1", "2", "3" }
1: 1 1: 1, 2: 2 1: 1, 2: 2, 3: 3
通过使用wrap()函数,可以将函数的多个返回值传递给可变参数函数,如 fmt.Printf()。这提供了一种简单方便的方法来格式化和打印函数调用的结果。
以上是如何使用 fmt.Printf() 打印 Go 函数的多个返回值?的详细内容。更多信息请关注PHP中文网其他相关文章!