Test de Go: 24 preguntas para comprobar lo que sabes

¿Cuánto Go sabes de verdad? Estas 24 preguntas repasan las 8 lecciones de nuestro curso de Go: el compilador estricto, valores cero, slices y maps, interfaces implícitas, errores como valores, defer, punteros, goroutines y canales, paquetes y go test. Elige una respuesta en cada pregunta y pulsa Corregir al final: verás tu nota, los aciertos por lección y la explicación de cada respuesta.

No hace falta registrarse y nada se envía a ningún sitio: el test se corrige en tu propio navegador. Todas las respuestas con código se comprobaron compilando y ejecutando el código con Go 1.25.14.

Pregunta 1Lección 1: Primeros pasos

¿Qué ocurre al compilar este programa?

package main

import (
	"fmt"
	"os"
)

func main() {
	fmt.Println("hola")
}
Pregunta 2Lección 1: Primeros pasos

¿Qué paquete debe declarar un archivo para que go build produzca un ejecutable?

Pregunta 3Lección 1: Primeros pasos

¿Cuál de estas cosas impide que un programa compile?

Pregunta 4Lección 2: Tipos, variables y funciones

¿Qué imprime este código?

var s string
var n int
var b bool
fmt.Printf("%q %d %v\n", s, n, b)
Pregunta 5Lección 2: Tipos, variables y funciones

¿Qué ocurre con esta declaración, escrita fuera de cualquier función?

package main

x := 10
Pregunta 6Lección 2: Tipos, variables y funciones

¿Qué imprime este código?

entero := 7
fmt.Println(float64(entero / 2))
Pregunta 7Lección 3: Control y colecciones

¿Qué imprime este código?

s := []string{"a", "b"}
s = append(s, "c")
fmt.Println(len(s), cap(s))
Pregunta 8Lección 3: Control y colecciones

¿Qué imprime este código?

base := []int{1, 2, 3, 4, 5}
parte := base[1:3]
parte[0] = 99
fmt.Println(base)
Pregunta 9Lección 3: Control y colecciones

¿Qué imprime este código?

m := map[string]int{"a": 1}
v, ok := m["z"]
fmt.Println(v, ok)
Pregunta 10Lección 4: Structs, métodos e interfaces

¿Qué imprime este código?

type Contador struct{ N int }

func (c Contador) Sumar() { c.N++ }

c := Contador{}
c.Sumar()
c.Sumar()
fmt.Println(c.N)
Pregunta 11Lección 4: Structs, métodos e interfaces

¿Qué necesita un tipo para cumplir una interfaz en Go?

Pregunta 12Lección 4: Structs, métodos e interfaces

¿Qué imprime este código?

type Moneda float64

func (m Moneda) String() string {
	return fmt.Sprintf("%.2f €", float64(m))
}

fmt.Println(Moneda(12.5))
Pregunta 13Lección 5: Errores

¿Qué imprime este código?

base := errors.New("sin stock")
err := fmt.Errorf("pedido: %v", base)
fmt.Println(errors.Is(err, base))
Pregunta 14Lección 5: Errores

¿Qué imprime este código?

for i := 1; i <= 3; i++ {
	defer fmt.Print(i)
}
fmt.Print("fin ")
Pregunta 15Lección 5: Errores

¿Qué es un error en Go?

Pregunta 16Lección 6: Punteros y valores

¿Qué imprime este código?

type Producto struct{ Precio float64 }

func subir(p Producto) { p.Precio += 10 }

a := Producto{Precio: 20}
subir(a)
fmt.Println(a.Precio)
Pregunta 17Lección 6: Punteros y valores

¿Qué imprime este código?

func cambiar(s []int) {
	s[0] = 99
	s = append(s, 4)
}

s := []int{1, 2, 3}
cambiar(s)
fmt.Println(s)
Pregunta 18Lección 6: Punteros y valores

¿Qué ocurre al ejecutar este código?

type Producto struct{ Nombre string }

var p *Producto
fmt.Println(p.Nombre)
Pregunta 19Lección 7: Concurrencia

Si main termina mientras quedan goroutines en marcha, ¿qué pasa?

Pregunta 20Lección 7: Concurrencia

¿Qué ocurre al ejecutar este código?

c := make(chan int)
c <- 1
fmt.Println("enviado")
Pregunta 21Lección 7: Concurrencia

¿Qué imprime este código?

c := make(chan int, 2)
c <- 5
close(c)
a := <-c
b, ok := <-c
fmt.Println(a, b, ok)
Pregunta 22Lección 8: Paquetes, pruebas y herramientas

¿Qué decide si una función de un paquete se puede usar desde otro paquete?

Pregunta 23Lección 8: Paquetes, pruebas y herramientas

¿Qué funciones ejecuta go test?

Pregunta 24Lección 8: Paquetes, pruebas y herramientas

¿Qué ocurre con este código, si nombre es una cadena?

nombre := "Ana"
fmt.Printf("hola %d\n", nombre)

Las preguntas siguen el orden del curso. Si fallas alguna, el enlace de su explicación te lleva a la lección donde se explica con ejemplos. Imagen para redes: código en un monitor, foto de Markus Spiske, Wikimedia Commons, CC0.