Saltar al contenido principal
eLearner.app
Módulo 1 · Lección 3 de 53/50 en el curso~10 min
Lecciones del módulo (3/5)

Constantes e iota

Las constantes son valores inmutables conocidos en el momento de la compilación. En Go están declarado con const y se puede escribir o sin escribir. Los no tipificados tienen un superpoder: se adaptan al tipo que requiere el contexto, evitándote de tener que escribir conversiones explícitas.

Sintaxis básica

Go
const PI = 3.14
const MaxRetry int = 5
const Name = "eLearner"

Se escribe MaxRetry (int): solo puedes asignarlo a un int. PI y Name están sin tipo: se comportan como "literales" y se adaptan a el contexto.

Go
const PI = 3.14

var f float32 = PI  // ok: PI è non tipata, diventa float32
var d float64 = PI  // ok

bloques const

Puedes agrupar varias constantes en un bloque:

Go
const (
    StateInitial = "INIT"
    StateReady   = "READY"
    StateError   = "ERROR"
)

iota: el contador de enumeración

Dentro de un bloque const, el identificador especial iota comienza en 0 y aumenta en 1 en cada línea. Es el modismo para hacer enumeraciones:

Go
const (
    Monday = iota // 0
    Tuesday       // 1
    Wednesday     // 2
    Thursday      // 3
    Friday        // 4
)

Las líneas siguientes heredan la expresión si no proporcionan una. Por eso es suficiente escribir Tuesday sin repetir = iota.

Patrones con expresiones.

iota puede aparecer dentro de expresiones arbitrarias:

Go
const (
    KB = 1 << (10 * (iota + 1)) // 1 << 10 = 1024
    MB                          // 1 << 20
    GB                          // 1 << 30
    TB                          // 1 << 40
)

Saltar un valor

Si no desea asignar un valor a una línea (porque desea que iota incrementar de todos modos), use el identificador en blanco _:

Go
const (
    _  = iota // scarta 0
    KB        // 1
    MB        // 2
)

Tu turno

Ejercicio#go.m1.l3.e1
Intentos: 0Cargando...

Declare un PI constante con valor 3.14 a nivel de paquete, luego imprímalo dentro de main.

Cargando editor...
Mostrar pista

`const PI = 3.14` va al nivel de paquete, fuera de main.

Solución disponible después de 3 intentos

Ejercicio#go.m1.l3.e2
Intentos: 0Cargando...

Defina un bloque constante con los días de la semana (lunes, martes, miércoles) numerados desde 1 usando iota.

Cargando editor...
Mostrar pista

Utilice `iota + 1` en la primera línea del bloque; Las líneas siguientes heredan la expresión.

Solución disponible después de 3 intentos

Cuestionario#go.m1.l3.e3
Listo

¿Qué imprime este programa?

Go
const (
    A = iota * 2
    B
    C
)
fmt.Println(A, B, C)
Opciones de respuesta

Resumen

  • const para valores inmutables conocidos en tiempo de compilación.
  • Las constantes sin tipo se adaptan al contexto: no se necesita conversión.
  • const ( ... ) bloquea valores relacionados con el grupo.
  • iota comienza en 0 en cada bloque y aumenta línea por línea.
  • Patrones: enumeración (= iota), máscara de bits (= 1 << iota), unidades (= 1 << (10*iota)).