Heim > Backend-Entwicklung > Golang > Kann „fmt.Println' von Go mehrere Rückgabewerte einer Funktion direkt verarbeiten?

Kann „fmt.Println' von Go mehrere Rückgabewerte einer Funktion direkt verarbeiten?

Susan Sarandon
Freigeben: 2024-12-15 07:57:14
Original
286 Leute haben es durchsucht

Can Go's `fmt.Println` Handle Multiple Return Values from a Function Directly?

Übergabe mehrerer Rückgabewerte an variadische Funktionen in Go

Frage:

Kann eine Funktion sein Die Rückgabe mehrerer ganzzahliger Werte wird direkt an fmt.Println() zur formatierten Zeichenfolgenausgabe übergeben, ähnlich wie Python?

func temp() (int, int) { return 1, 1 }
fmt.Println("first= %d and second = %d", temp()) // Not supported
Nach dem Login kopieren

Antwort:

Nein, dies wird in Go standardmäßig nicht direkt unterstützt. Gemäß der Sprachspezifikation erwartet „Calls“ einen Funktionsaufruf als einziges Argument für variadische Parameter wie ...interface{}, und Funktionen müssen mindestens einen Rückgabewert haben.

fmt.Printf(), Ermöglicht jedoch die Verwendung einer Formatzeichenfolge neben dem Variadic-Parameter, wodurch er für diese Aufgabe besser geeignet ist. Da temp() jedoch ein Tupel zurückgibt, kann es nicht direkt als ...interface{}-Argument übergeben werden.

Lösung:

Um mehrere Rückgabewerte zu übergeben In eine variadic-Funktion kann eine Utility-Wrapper-Funktion verwendet werden, um das Tupel in ein []interface{}-Slice umzuwandeln, das dann als variadic-Argument übergeben werden kann. Unten ist eine Beispielimplementierung:

func wrap(vs ...interface{}) []interface{} {
    return vs
}
Nach dem Login kopieren

Mit dieser Wrapper-Funktion kann die temp()-Funktion jetzt an fmt.Printf() übergeben werden:

func main() {
    fmt.Printf("first= %v and second = %v", wrap(temp()...)...)
}
Nach dem Login kopieren

Dadurch wird die ordnungsgemäß gedruckt Werte von temp().

Das obige ist der detaillierte Inhalt vonKann „fmt.Println' von Go mehrere Rückgabewerte einer Funktion direkt verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage