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.
Pontos-chave
ReadString('\n')reads up to the Enter key.- TrimSpace removes the line ending.
- Atoi returns the number and an error.
Exemplo executável de Go
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.Pratique
Terminou esta lição?
Marque como aprendida para acompanhar seu progresso.
Pratique com um desafio
Use o conteúdo desta lição para resolver um problema real. Cada desafio roda no navegador, com testes instantâneos e uma revisão por IA.
- Somar os números válidos Some as entradas que são números inteiros e ignore todo o resto, do jeito que try/except lida com entrada inválida. Fácil
- Absolute Value Without abs Compute an absolute value with a condition. Fácil