Heim >Backend-Entwicklung >Golang >Wie erreicht man in Go mehrere Zuweisungen aus Arrays?

Wie erreicht man in Go mehrere Zuweisungen aus Arrays?

Linda Hamilton
Linda HamiltonOriginal
2024-11-12 11:35:01413Durchsuche

How to Achieve Multiple Assignments from Arrays in Go?

Mehrere Zuweisungen aus Arrays in Go

In Python kann das Entpacken aus Arrays elegant mit Zuweisungen wie:

a, b = "foo;bar".split(";")
erfolgen

Go unterstützt ein solches allgemeines Ein-/Auspacken nicht. Es gibt jedoch mehrere Möglichkeiten, mehrere Zuweisungen zu erreichen.

Benutzerdefinierte Funktionen:

Ein Ansatz besteht darin, eine benutzerdefinierte Funktion zu erstellen, die mehrere Werte zurückgibt, wie zum Beispiel:

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

Sie können dann direkt aus dem Funktionsaufruf zuweisen:

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

Variadic Pointer Argumente:

Eine weitere Option ist die Verwendung variadischer Zeigerargumente:

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

Dadurch können Sie mehreren Variablen Werte zuweisen:

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

Wahl des Ansatzes:

Der Ansatz mit benutzerdefinierten Funktionen ist möglicherweise für häufige Szenarien, in denen Sie Ich möchte nur zwei Variablen aufteilen und zuweisen. Für komplexere Array-Szenarien oder Array-Szenarien variabler Größe ist der Ansatz mit variadischen Zeigerargumenten möglicherweise flexibler.

Das obige ist der detaillierte Inhalt vonWie erreicht man in Go mehrere Zuweisungen aus Arrays?. 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