Fundamentos de Go

Reading User Input in Go

Read a line with bufio, trim it and convert it to a number without crashing on bad input.

  • Iniciante
  • 3 min de leitura
  • 1 exemplo executável
O que você vai aprender
  • bufio.NewReader
  • strings.TrimSpace
  • strconv.Atoi
From the keyboard to a number
  1. 1ReadString"36\n"
  2. 2TrimSpace"36"
  3. 3strconv.Atoi36, nil
  4. 4age + 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

  1. ReadString('\n') reads up to the Enter key.
  2. TrimSpace removes the line ending.
  3. Atoi returns the number and an error.

Exemplo executável de Go

Go
Executar código →
main.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)
}
Gerar um botão Run para este exemplo Resultado da execução
What is your name?
How old are you?
Hello, Ada! Next year you will be 37.

Pratique

Abra o exemplo no compilador online, mude um valor ou adicione uma linha e tente prever a saída antes de executar. Depois quebre o código de propósito e leia a mensagem do compilador.

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.

Todos os desafios