Heim  >  Artikel  >  Backend-Entwicklung  >  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
Barbara StreisandOriginal
2024-10-29 01:10:30470Durchsuche

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

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>

Beispiel-Eingabe/Ausgabe:

Enter the number of integers
3
Enter the integers
10 20 30
[10 20 30]

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>

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!

Stellungnahme:
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