In Go kann eine Funktion mehrere Werte zurückgeben. Das direkte Zuweisen der Rückgabewerte einer Funktion zu einem Formatstring in einem Aufruf von fmt.Println() ist jedoch standardmäßig nicht möglich.
Um dies zu erreichen Um das gewünschte Verhalten zu erreichen, sollte fmt.Printf() anstelle von fmt.Println() verwendet werden. Allerdings ist die Übergabe zusätzlicher Parameter neben dem Funktionsaufruf durch die Spezifikation für variadische Funktionsaufrufe nicht zulässig.
Um diese Einschränkung zu umgehen, kann eine Wrapper-Funktion eingesetzt werden. Die Funktion „wrap()“ nimmt mehrere Werte entgegen und gibt sie als Teil von Interface{}-Werten zurück. Dadurch können wir die Rückgabewerte jeder Funktion mit mindestens einem Rückgabewert an fmt.Printf() übergeben.
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
Durch die Verwendung der Funktion wrap() ist es möglich, mehrere Rückgabewerte einer Funktion an eine variadische Funktion wie zu übergeben fmt.Printf(). Dies bietet eine einfache und bequeme Möglichkeit, die Ergebnisse eines Funktionsaufrufs zu formatieren und auszudrucken.
Das obige ist der detaillierte Inhalt vonWie kann ich mit fmt.Printf() mehrere Rückgabewerte einer Go-Funktion drucken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!