Heim > Artikel > Backend-Entwicklung > Gibt die vom Benutzer eingegebene Zeichenfolge n-mal in go aus
Ich bin ein Neuling und möchte die vom Benutzer eingegebene Zeichenfolge nur n-mal drucken, aber es werden nur n-mal Leerzeichen gedruckt. Das ist mein Code
package main import ( "fmt" ) func main() { var n int var s string fmt.Scanf("%d", &n) fmt.Scanf("%s", &s) for i := 0; i < n; i++ { fmt.Printf("%s\n", s) } }
Gibt es eine Möglichkeit, dieses Problem zu lösen? Danke.
Ansicht scanf
Dokumente
Die zwei relevantesten Punkte zu Ihrer Frage sind:
Wenn Sie also die Anwendung unverändert ausführen, 20 foo
并按 Enter 键,您将获得预期的输出(foo
打印 20 次)。但是,如果您输入 20
eingeben und die Eingabetaste drücken, erhalten Sie 20 leere Zeilen. Sehen Sie, warum wir Folgendes ausführen:
var n int var s string fmt.Scanf("%d", &n) _, err := fmt.Scanf("%s", &s) if err != nil { panic(err) }
Dies führt zu einer Panik mit panic: Unexpected newline
, da gemäß der Spezifikation „Zeilenumbrüche in der Eingabe mit Zeilenumbrüchen im Format übereinstimmen müssen“. Angenommen, Sie möchten nach jeder Eingabe die Eingabetaste drücken, können Sie fmt.Scanf("%dn", &n)
verwenden. Wenn Sie jedoch, wie Sie in Ihrem Kommentar erwähnt haben, fmt.Scanf("%sn", &s)
verwenden und eine Zeichenfolge mit Leerzeichen eingeben, erhalten Sie nur das erste Bit (weil panic: Unexpected newline
而出现恐慌,因为根据规范,“输入中的换行符必须与格式中的换行符匹配”。假设您希望在每次输入后按 Enter 键,则可以使用 fmt.Scanf("%dn", &n)
。但是,正如您在评论中提到的,如果您使用 fmt.Scanf("%sn", &s)
并输入包含空格的字符串,那么您只会得到第一位(因为 scanf
Leerzeichen verwenden als Trennzeichen).
Wenn Sie die gesamte Zeile von stdin
erhalten möchten, bietet die Antwort auf diese Frage einige Optionen wie
func main() { var n int var s string fmt.Println("How many times? ") fmt.Scanf("%d\n", &n) fmt.Println("What to output? ") reader := bufio.NewReader(os.Stdin) s, _ = reader.ReadString('\n') for i := 0; i < n; i++ { fmt.Printf("%s", s) } }
Das obige ist der detaillierte Inhalt vonGibt die vom Benutzer eingegebene Zeichenfolge n-mal in go aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!