Escaneo de entrada
Lea entradas con formato
Escaneo de entrada es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.
Leer entradas con fmt
El paquete fmt puede leer valores, no solo imprimirlos. Las funciones de lectura analizan texto y lo convierten en variables con tipo.
Son el equivalente inverso de las funciones de impresión.
package main
import "fmt"
func main() {
var n int
fmt.Sscan("42", &n)
fmt.Println(n + 1)
}Se necesitan punteros
Las funciones de lectura deben almacenar un resultado, por lo que debe pasar la dirección de cada variable mediante &.
Olvidar & es el error más común al leer datos.
package main
import "fmt"
func main() {
var a, b int
fmt.Sscan("3 4", &a, &b)
fmt.Println(a + b)
}Sscan separa por espacios
fmt.Sscan lee valores separados por espacios desde una cadena y los almacena en varias variables; determina el tipo a partir de cada puntero.
package main
import "fmt"
func main() {
var name string
var age int
fmt.Sscan("Ada 36", &name, &age)
fmt.Println(name, age)
}Sscanf usa un formato
fmt.Sscanf analiza los datos según una cadena de formato, igual que Printf, pero al revés. Los caracteres literales del formato deben coincidir con la entrada.
package main
import "fmt"
func main() {
var h, m int
fmt.Sscanf("09:05", "%d:%d", &h, &m)
fmt.Println(h, m)
}Comprobar cuántos elementos se leyeron
Las funciones de lectura devuelven el número de elementos analizados correctamente y un error. Compruebe el número para saber si el análisis se completó correctamente.
package main
import "fmt"
func main() {
var a, b int
count, _ := fmt.Sscan("7", &a, &b)
fmt.Println("parsed:", count)
}Gestionar errores de análisis
Si la entrada no coincide con el tipo esperado, se devuelve un error. Inspecciónelo siempre cuando trabaje con datos reales.
package main
import "fmt"
func main() {
var n int
_, err := fmt.Sscan("notanumber", &n)
if err != nil {
fmt.Println("error:", err)
}
}Analizar tipos mixtos
Puede leer varios tipos diferentes en una sola llamada. El tipo de cada puntero determina cómo se analiza su token.
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 con texto literal
Sscanf resulta ideal para estructuras fijas, como coordenadas o pares clave-valor, en las que la puntuación separa los números.
package main
import "fmt"
func main() {
var x, y int
fmt.Sscanf("(3,8)", "(%d,%d)", &x, &y)
fmt.Println(x, y)
}Leer números de punto flotante
Use %f en Sscanf o un *float64 en Sscan para leer números decimales.
package main
import "fmt"
func main() {
var temp float64
fmt.Sscanf("21.5C", "%fC", &temp)
fmt.Println(temp)
}Scan frente a Stdin
fmt.Scan y fmt.Scanf leen de la entrada estándar del mismo modo que Sscan lee de una cadena. Las reglas de análisis son idénticas; solo cambia el origen.
package main
import "fmt"
func main() {
line := "100 200"
var a, b int
fmt.Sscan(line, &a, &b)
fmt.Println(a * b)
}Un analizador pequeño
Combine la lectura de datos con un cálculo para analizar un registro y producir un 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)
}Comprobación rápida
¿Qué debe pasar a una función de lectura para almacenar el resultado?
Recapitulación: leer entradas
Ha aprendido a leer entradas con formato:
Sscansepara por espacios en blanco;Sscanfsigue una cadena de formato.- Pase punteros con
¶ cada destino. - Compruebe el número y el error devueltos para detectar entradas incorrectas.
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)
}Preguntas frecuentes
¿La lección «Escaneo de entrada» es gratis?
Sí — el texto completo de «Escaneo de entrada» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Escaneo de entrada»?
Lea entradas con formato Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Go Academy?
No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Escaneo de entrada»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Go Academy?
Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Verbos de Printf
- Sprintf y Fprintf
- La interfaz Stringer
- Escaneo de entrada