0Pricing
Go Academy · Lección

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:

  • Sscan separa por espacios en blanco; Sscanf sigue una cadena de formato.
  • Pase punteros con & para 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

  1. Verbos de Printf
  2. Sprintf y Fprintf
  3. La interfaz Stringer
  4. Escaneo de entrada
← Volver a Go Academy