Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich Slices in Go Like Python entpacken?

Wie kann ich Slices in Go Like Python entpacken?

Susan Sarandon
Susan SarandonOriginal
2024-11-12 21:50:02855Durchsuche

How Can I Unpack Slices in Go Like Python?

Enthüllung der Geheimnisse des Array-Entpackens in Go

Pythons eleganter Ansatz für Mehrfachzuweisungen aus Arrays hat dazu geführt, dass sich viele Go-Entwickler nach einer ähnlichen Lösung sehnen . Obwohl Go möglicherweise kein direktes Äquivalent bietet, gibt es verschiedene Strategien, um das Entpacken von Slices bei der Zuweisung zu erreichen.

Go vs. Python

Im Gegensatz zu Python ist dies bei der Zuweisungssyntax von Go nicht der Fall Unterstützt das direkte Auspacken von Slices. Dies stellt eine Herausforderung dar, wenn versucht wird, mehrere von einer Aufteilungsoperation zurückgegebene Werte zuzuweisen, wie im Beispiel:

x := strings.Split("foo;bar", ";")
a, b := x[0], x[1]

Lösungen

Um diese Einschränkung zu überwinden, gibt es mehrere Ansätze :

1. Benutzerdefinierte Entpackfunktion:

Definieren Sie eine benutzerdefinierte Funktion, um das Entpacken zu handhaben und mehrere Werte zurückzugeben:

func splitLink(s, sep string) (string, string) {
    x := strings.Split(s, sep)
    return x[0], x[1]
}

Diese Funktion kann dann wie folgt verwendet werden:

name, link := splitLink("foo\thttps://bar", "\t")

2. Variadische Zeigerargumente:

Verwenden Sie eine Funktion mit variadischen Zeigerargumenten, um Slices zu entpacken:

func unpack(s []string, vars... *string) {
    for i, str := range s {
        *vars[i] = str
    }
}

Was die folgende Syntax ermöglicht:

var name, link string
unpack(strings.Split("foo\thttps://bar", "\t"), &name, &link)

While Diese Lösungen bieten Problemumgehungen. Es ist jedoch zu beachten, dass Go das allgemeine Packen/Entpacken, wie es in Python implementiert ist, nicht unterstützt. Die Wahl des Ansatzes hängt vom konkreten Anwendungsfall und der gewünschten Lesbarkeit ab.

Das obige ist der detaillierte Inhalt vonWie kann ich Slices in Go Like Python entpacken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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