Heim >Backend-Entwicklung >Golang >Wie liest man effizient mehrere Zahlen aus der Standardeingabe in ein Go-Slice ein?

Wie liest man effizient mehrere Zahlen aus der Standardeingabe in ein Go-Slice ein?

Linda Hamilton
Linda HamiltonOriginal
2024-11-29 05:29:10110Durchsuche

How to Efficiently Read Multiple Numbers into a Go Slice from Standard Input?

Mehrere Zahlen aus der Standardeingabe in Go Slice einlesen

In Go können Sie mit der Funktion fmt.Fscan mehrere Zahlen in ein Array oder Slice einlesen. Beim Versuch, direkt in ein Slice zu scannen, kann jedoch ein Fehler auftreten. Dies liegt daran, dass die fmt.Fscan-Funktion das Scannen von Slices nicht von Natur aus unterstützt.

Um dieses Problem zu lösen, können Sie eine Dienstprogrammfunktion erstellen, die die Adressen aller Slice-Elemente in ein Array packt. So würden Sie es machen:

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

Sobald Sie die Utility-Funktion haben, können Sie damit ein ganzes Slice in ein Array scannen:

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

Zu Testzwecken, Sie Sie können fmt.Sscan verwenden, um eine Zeichenfolge in das Slice zu scannen:

numbers := make([]int, 5)
n, err := fmt.Sscan("1 3 5 7 9", packAddrs(numbers)...)
fmt.Println(numbers, n, err)

Ausgabe (versuchen Sie es unterwegs Spielplatz):

[1 3 5 7 9] 5 <nil>

Das obige ist der detaillierte Inhalt vonWie liest man effizient mehrere Zahlen aus der Standardeingabe in ein Go-Slice ein?. 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