Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich mit fmt.Fscan von Go effizient mehrere Zahlen in ein Array scannen?

Wie kann ich mit fmt.Fscan von Go effizient mehrere Zahlen in ein Array scannen?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-26 07:31:10656Durchsuche

How Can I Efficiently Scan Multiple Numbers into an Array Using Go's fmt.Fscan?

Zahlen in Arrays scannen mit fmt.Fscan in Go

Eine der Aufgaben, die bei der Programmierung häufig auftreten, ist das Lesen mehrerer numerischer Eingaben des Benutzers . In der Go-Sprache kann dies mithilfe der Funktion fmt.Fscan zusammen mit einem Array oder Slice zum Speichern der Eingabewerte erreicht werden.

Betrachten Sie den folgenden Codeausschnitt, in dem der Benutzer aufgefordert wird, zwei Zahlen einzugeben:

numbers := make([]int, 2)
fmt.Fscan(os.Stdin, &numbers[0], &numbers[1])

Indem wir die Speicheradressen einzelner Array-Elemente (Zahlen[0] und Zahlen[1]) als Argumente für fmt.Fscan bereitstellen, können wir effizient lesen und speichern die Eingabezahlen im Array.

Allerdings wäre ein prägnanterer Ansatz wünschenswert, bei dem wir die Zahlen direkt in das Array selbst scannen können. Um dies zu erreichen, können wir eine Hilfsfunktion erstellen, die ein Stück Zeiger auf die Elemente unseres Arrays erstellt:

func packAddrs(n []int) []interface{} {
    p := make([]interface{}, len(n))
    for i := range n {
        p[i] = &n[i]
    }
    return p
}

Indem wir das Ergebnis von packAddrs an fmt.Fscan übergeben, können wir Eingabezahlen effektiv scannen das Array:

numbers := make([]int, 2)
n, err := fmt.Fscan(os.Stdin, packAddrs(numbers)...)
fmt.Println(numbers, n, err)

Dieser Ansatz bietet eine einfachere und effizientere Möglichkeit, mehrere Zahlen mithilfe von fmt.Fscan in ein Array einzulesen. Dies ist besonders nützlich, wenn die Anzahl der Eingabewerte nicht im Voraus bekannt ist.

Das obige ist der detaillierte Inhalt vonWie kann ich mit fmt.Fscan von Go effizient mehrere Zahlen in ein Array scannen?. 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