Heim > Backend-Entwicklung > Golang > Wie lese ich mehrere Ganzzahlen aus der Standardeingabe in Golang ohne For-Schleife?

Wie lese ich mehrere Ganzzahlen aus der Standardeingabe in Golang ohne For-Schleife?

Barbara Streisand
Freigeben: 2024-10-29 01:10:30
Original
559 Leute haben es durchsucht

How to Read Multiple Integers from Standard Input in Golang Without a For Loop?

Durch Leerzeichen getrennte Ganzzahlen in Golang lesen

Frage:

Wie man mehrere effizient liest Ganzzahlen aus der Standardeingabe (stdin) importieren und in einem Ganzzahl-Slice speichern, ohne eine for-Schleife in Golang zu verwenden? Zum Beispiel mit der folgenden Eingabe:

Enter the number of integers
3
Enter the integers
23 45 66
Nach dem Login kopieren

Wie konvertiert man diese Werte in ein ganzzahliges Slice?

Antwort:

Obwohl eine Schleife von Natur aus vorhanden ist, ist es möglich, dies zu erreichen, ohne explizite for- oder goto-Schleifen zu verwenden. So geht's:

<code class="go">package main

import "fmt"

func main() {
    fmt.Println(`Enter the number of integers`)
    var n int
    if m, err := Scan(&amp;n); m != 1 {
        panic(err)
    }
    fmt.Println(`Enter the integers`)
    all := make([]int, n)
    ReadN(all, 0, n)
    fmt.Println(all)
}

func ReadN(all []int, i, n int) {
    if n == 0 {
        return
    }
    if m, err := Scan(&amp;all[i]); m != 1 {
        panic(err)
    }
    ReadN(all, i+1, n-1)
}

func Scan(a *int) (int, error) {
    return fmt.Scan(a)
}</code>
Nach dem Login kopieren

Beispiel-Eingabe/Ausgabe:

Enter the number of integers
3
Enter the integers
10 20 30
[10 20 30]
Nach dem Login kopieren

Optimierung für schnelleres Scannen von Eingaben:

Um die Eingabe-Scangeschwindigkeit zu erhöhen, ersetzen Sie die Scan-Funktion durch die folgende optimierte Version:

<code class="go">func Scan(a *int) (int, error) {
    var buf [10]byte
    var ret int
    for scanned, err := fmt.Scanf("%d%s", &ret, &buf); err == nil && scanned != 2; {
        fmt.Scanf("%s", &buf)
    }
    *a = ret
    return 1, err
}</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie lese ich mehrere Ganzzahlen aus der Standardeingabe in Golang ohne For-Schleife?. 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