在 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中文網其他相關文章!