Ganzzahlen aus durch Leerzeichen getrennten Eingaben in Golang lesen: Ein effizienter Ansatz
Beim Programmieren das Lesen einer durch Leerzeichen getrennten Menge von Ganzzahlen aus der Standardeingaben zu verarbeiten und diese effizient in einem Array zu speichern, ist eine häufige Aufgabe. Eine Möglichkeit, dies zu erreichen, ist die Verwendung einer einfachen for-Schleife. Es gibt jedoch eine Technik, die Rekursion nutzt, um den Code zu minimieren und gleichzeitig eine optimale Leistung aufrechtzuerhalten.
Rekursion ohne explizite Schleifen verwenden
Der folgende Go-Codeausschnitt zeigt, wie man liest Ganzzahlen aus der Standardeingabe ohne Verwendung von for- oder goto-Schleifen:
<code class="go">package main import "fmt" func main() { var n int fmt.Println(`Enter the number of integers`) if _, err := fmt.Scan(&n); err != nil { panic(err) } fmt.Println(`Enter the integers`) all := make([]int, n) ReadN(all, 0, n) fmt.Println(all) } // Recursively reads n integers into all starting from position i. func ReadN(all []int, i, n int) { if n == 0 { return } if _, err := fmt.Scan(&all[i]); err != nil { panic(err) } ReadN(all, i+1, n-1) }</code>
Beispielausgabe
Angenommen, die Standardeingabe enthält die Ganzzahlen:
Enter the number of integers 3 Enter the integers 23 45 66
Das Ausführen des Programms würde Folgendes ausgeben:
[23 45 66]
Eingabescan optimieren
Um das Eingabescannen weiter zu optimieren, sollten Sie die fmt.Scan-Funktion in ReadN durch einen benutzerdefinierten Reader ersetzen Dies ermöglicht eine schnellere Eingabeverarbeitung:
<code class="go">type reader struct { val int } func (r *reader) Read(b []byte) (int, error) { w, err := fmt.Scanf("%d", &r.val) if err != nil { return w, err } b[0] = byte(r.val) return 1, err }</code>
In dieser optimierten Implementierung wird ein benutzerdefinierter Reader mit einem Feldwert erstellt, um den ganzzahligen Wert zu speichern. Die Read-Methode verwendet fmt.Scanf, um eine Ganzzahl aus der Standardeingabe zu lesen und sie in val zu speichern. Beim Lesen aus dem benutzerdefinierten Reader wird nur ein Byte verarbeitet, was den Overhead erheblich reduziert.
Durch die Integration dieser Techniken können Sie Sätze von Ganzzahlen aus der Standardeingabe in Golang effizient lesen und so die Leistung maximieren und gleichzeitig die Codekomplexität minimieren.
Das obige ist der detaillierte Inhalt vonWie liest man Ganzzahlen aus durch Leerzeichen getrennten Eingaben in Golang: Ein rekursiver Ansatz?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!