0Pricing
Go Academy · Aula

Leitura de entrada

Leia entradas formatadas

Leitura de entrada é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.

Lendo a entrada com fmt

O pacote fmt pode ler valores, não apenas imprimi-los. As funções de leitura analisam texto e o transformam em variáveis tipadas.

Elas são o equivalente inverso das funções de impressão.

package main

import "fmt"

func main() {
    var n int
    fmt.Sscan("42", &n)
    fmt.Println(n + 1)
}

Ponteiros são necessários

As funções de leitura precisam armazenar um resultado, portanto você passa o endereço de cada variável usando &.

Esquecer & é o erro mais comum ao fazer uma leitura.

package main

import "fmt"

func main() {
    var a, b int
    fmt.Sscan("3 4", &a, &b)
    fmt.Println(a + b)
}

Sscan separa pelos espaços

fmt.Sscan lê valores separados por espaços de uma cadeia de caracteres para várias variáveis, escolhendo o tipo a partir de cada ponteiro.

package main

import "fmt"

func main() {
    var name string
    var age int
    fmt.Sscan("Ada 36", &name, &age)
    fmt.Println(name, age)
}

Sscanf usa uma formatação

fmt.Sscanf analisa de acordo com uma cadeia de caracteres de formatação, assim como Printf ao contrário. Os caracteres literais da formatação precisam corresponder à entrada.

package main

import "fmt"

func main() {
    var h, m int
    fmt.Sscanf("09:05", "%d:%d", &h, &m)
    fmt.Println(h, m)
}

Verificando quantos foram lidos

As funções de leitura retornam a quantidade de itens analisados com sucesso e um erro. Verifique a quantidade para saber se a análise foi concluída com sucesso.

package main

import "fmt"

func main() {
    var a, b int
    count, _ := fmt.Sscan("7", &a, &b)
    fmt.Println("parsed:", count)
}

Tratando erros de análise

Se a entrada não corresponder ao tipo esperado, um erro será retornado. Sempre examine esse erro ao trabalhar com entrada real.

package main

import "fmt"

func main() {
    var n int
    _, err := fmt.Sscan("notanumber", &n)
    if err != nil {
        fmt.Println("error:", err)
    }
}

Analisando tipos mistos

Você pode ler vários tipos diferentes em uma única chamada. O tipo de cada ponteiro determina como seu token é analisado.

package main

import "fmt"

func main() {
    var word string
    var price float64
    var ok bool
    fmt.Sscan("apple 1.50 true", &word, &price, &ok)
    fmt.Println(word, price, ok)
}

Sscanf com texto literal

Sscanf é excelente para formatos fixos, como coordenadas ou pares de chave e valor, nos quais a pontuação separa os números.

package main

import "fmt"

func main() {
    var x, y int
    fmt.Sscanf("(3,8)", "(%d,%d)", &x, &y)
    fmt.Println(x, y)
}

Lendo números de ponto flutuante

Use %f em Sscanf ou um *float64 em Sscan para ler números decimais.

package main

import "fmt"

func main() {
    var temp float64
    fmt.Sscanf("21.5C", "%fC", &temp)
    fmt.Println(temp)
}

Scan versus entrada padrão

fmt.Scan e fmt.Scanf leem da entrada padrão da mesma forma que Sscan lê de uma cadeia de caracteres. As regras de análise são idênticas; apenas a origem é diferente.

package main

import "fmt"

func main() {
    line := "100 200"
    var a, b int
    fmt.Sscan(line, &a, &b)
    fmt.Println(a * b)
}

Um pequeno analisador

Combine a leitura com um cálculo para analisar um registro e produzir um resultado.

package main

import "fmt"

func main() {
    var name string
    var qty int
    var unit float64
    fmt.Sscanf("pen 3 1.25", "%s %d %f", &name, &qty, &unit)
    fmt.Printf("%s total: $%.2f\n", name, float64(qty)*unit)
}

Verificação rápida

O que você precisa passar a uma função de leitura para armazenar o resultado?

Recapitulação: lendo a entrada

Você aprendeu a ler entradas formatadas:

  • Sscan separa pelos espaços em branco; Sscanf segue uma cadeia de caracteres de formatação.
  • Passe ponteiros com & para cada destino.
  • Verifique a quantidade e o erro retornados para detectar entradas inválidas.
package main

import "fmt"

func main() {
    var d, mo, y int
    fmt.Sscanf("30/05/2026", "%d/%d/%d", &d, &mo, &y)
    fmt.Println(y, mo, d)
}

Perguntas Frequentes

A aula “Leitura de entrada” é grátis?

Sim — o texto completo de “Leitura de entrada” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.

O que vou aprender em “Leitura de entrada”?

Leia entradas formatadas Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Go Academy?

Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Leitura de entrada”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Go Academy?

Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Verbos de Printf
  2. Sprintf e Fprintf
  3. A interface Stringer
  4. Leitura de entrada
← Voltar para Go Academy