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
Freigeben: 2024-11-29 05:29:10
Original
184 Leute haben es durchsucht

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
}
Nach dem Login kopieren

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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

Ausgabe (versuchen Sie es unterwegs Spielplatz):

[1 3 5 7 9] 5 <nil>
Nach dem Login kopieren

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!

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