Heim >Backend-Entwicklung >Golang >Wie liest man effizient mehrere Zahlen aus der Standardeingabe in ein Go-Slice ein?
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!