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.
Punti chiave
ReadString('\n')reads up to the Enter key.- TrimSpace removes the line ending.
- Atoi returns the number and an error.
Esempio Go eseguibile
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.Esercitati
Hai finito questa lezione?
Segnala come imparata per tenere traccia dei tuoi progressi.
Esercitati con una sfida
Usa ciò che questa lezione spiega per risolvere un problema reale. Ogni sfida gira nel browser, con test immediati e una revisione dell'IA.
- Sommare i numeri validi Somma gli elementi che sono numeri interi e ignora tutto il resto, come fa try/except quando gestisce input non valido. Facile
- Valore Assoluto Senza abs Calcola un valore assoluto usando una condizione. Facile