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:
Sscansepara pelos espaços em branco;Sscanfsegue uma cadeia de caracteres de formatação.- Passe ponteiros com
¶ 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
- Verbos de Printf
- Sprintf e Fprintf
- A interface Stringer
- Leitura de entrada