Zahlen in Slices in Go scannen
Beim Einlesen mehrerer Zahlen aus der Standardeingabe in Go können Sie einzelnen Variablen Werte zuweisen:
numbers := make([]int, 2) fmt.Fscan(os.Stdin, &numbers[0], &numbers[1])
Vielleicht möchten Sie den Vorgang jedoch vereinfachen und direkt in ein Slice einlesen. Das fmt-Paket unterstützt das Scannen in Slices nicht, aber die folgende Dienstprogrammfunktion kann helfen:
func packAddrs(n []int) []interface{} { p := make([]interface{}, len(n)) for i := range n { p[i] = &n[i] } return p }
Diese Funktion erstellt ein Adressen-Slice für jedes Element im Eingabe-Slice. Mit dieser Funktion können Sie in ein Slice wie folgt scannen:
numbers := make([]int, 2) n, err := fmt.Fscan(os.Stdin, packAddrs(numbers)...) fmt.Println(numbers, n, err)
Testen Sie dies mit fmt.Sscan():
numbers := make([]int, 5) n, err := fmt.Sscan("1 3 5 7 9", packAddrs(numbers)...) fmt.Println(numbers, n, err)
Ausgabe:
[1 3 5 7 9] 5 <nil>
Das obige ist der detaillierte Inhalt vonWie kann man in Go effizient mehrere Zahlen in einem Slice scannen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!