Volver a la página principal
lunes 21 octubre 2024
13

Cómo usar Goroutines en Go

Las goroutines en Go son funciones que se ejecutan de manera concurrente, permitiendo realizar múltiples tareas al mismo tiempo sin bloquear la ejecución del programa principal. Son ligeras en términos de uso de recursos y son fundamentales para aprovechar la concurrencia en Go.

¿Qué son las goroutines?

Las goroutines son una característica clave de Go que permite ejecutar funciones de manera concurrente, de forma asíncrona. Se lanzan utilizando la palabra clave go antes de una función. Aunque una goroutine se parece a un hilo de ejecución, consume muchos menos recursos y es gestionada por el propio runtime de Go.

Cuando una goroutine se ejecuta, su tarea puede ser pausada o reanudada automáticamente por el scheduler de Go, lo que permite que muchas goroutines se ejecuten de manera eficiente, incluso si se tiene un número limitado de núcleos en el procesador.

Sintaxis básica

Para lanzar una goroutine, simplemente precede una llamada de función con la palabra clave go. A continuación te muestro la sintaxis básica:

package main

import (
    "fmt"
    "time"
)

func sayHello() {
    fmt.Println("Hello, world!")
}

func main() {
    go sayHello()  // Lanzar la goroutine
    time.Sleep(time.Second)  // Esperar para permitir que la goroutine termine
}

En este ejemplo, la función sayHello() se ejecuta en una goroutine separada. Sin el time.Sleep(), el programa principal podría finalizar antes de que la goroutine se complete.

Ejemplos de uso de goroutines

Ejemplo básico de goroutine

package main

import (
    "fmt"
    "time"
)

func printNumbers() {
    for i := 1; i <= 5; i++ {
        fmt.Println(i)
        time.Sleep(500 * time.Millisecond)
    }
}

func main() {
    go printNumbers()  // Ejecuta la función en una goroutine
    fmt.Println("La goroutine se ha iniciado.")
    time.Sleep(3 * time.Second)  // Esperar a que la goroutine termine
    fmt.Println("Programa principal terminado.")
}

Goroutines con funciones anónimas

También es posible usar goroutines con funciones anónimas:

package main

import (
    "fmt"
    "time"
)

func main() {
    go func() {
        fmt.Println("Esta es una goroutine anónima")
    }()
    time.Sleep(1 * time.Second)
}

Referencia oficial

Para obtener más información sobre goroutines, visita la documentación oficial de Go.

Etiquetas:
go
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer