Reading User Input in Go
Read a line with bufio, trim it and convert it to a number without crashing on bad input.
- bufio.NewReader
- strings.TrimSpace
- strconv.Atoi
- 1
ReadString"36\n" - 2
TrimSpace"36" - 3
strconv.Atoi36, nil - 4
age + 137
Text in, number out
bufio.NewReader reads from the keyboard one line at a time. The text always arrives as a string, so numbers must be converted with strconv before you calculate with them.
ReadString('\n') returns everything up to the Enter key, and TrimSpace removes the line ending. strconv.Atoi returns the number and an error; the error is not nil when the text is not a number. The sample output uses the answers Ada and 36: in the online compiler, type your answers when the prompts appear.
Das Wichtigste
ReadString('\n')reads up to the Enter key.- TrimSpace removes the line ending.
- Atoi returns the number and an error.
Ausführbares Go-Beispiel
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Println("What is your name?")
name, _ := reader.ReadString('\n')
name = strings.TrimSpace(name)
fmt.Println("How old are you?")
text, _ := reader.ReadString('\n')
age, err := strconv.Atoi(strings.TrimSpace(text))
if err != nil {
fmt.Printf("Hello, %s! That is not a number.\n", name)
return
}
fmt.Printf("Hello, %s! Next year you will be %d.\n", name, age+1)
}
What is your name?
How old are you?
Hello, Ada! Next year you will be 37.Üben
Lektion fertig?
Markiere sie als gelernt, um deinen Fortschritt zu verfolgen.
Mit einer Challenge üben
Nutze den Inhalt dieser Lektion, um ein echtes Problem zu lösen. Jede Challenge läuft im Browser, mit sofortigen Tests und einem KI-Review.
- Gültige Zahlen summieren Addiere die Einträge, die ganze Zahlen sind, und überspringe alles andere, so wie try/except mit ungültiger Eingabe umgeht. Einfach
- Absolute Value Without abs Compute an absolute value with a condition. Einfach