Ejecución de Goroutine dentro de un controlador http

Si inicio una rutina dentro de un controlador http, ¿se completará incluso después de devolver la respuesta? Aquí hay un código de ejemplo:

package main

import (
    "fmt"
    "net/http"
    "time"
)

func worker() {
    fmt.Println("worker started")
    time.Sleep(time.Second * 10)
    fmt.Println("worker completed")
}

func HomeHandler(w http.ResponseWriter, r *http.Request) {
    go worker()
    w.Write([]byte("Hello, World!"))
}

func main() {
    http.HandleFunc("/home", HomeHandler)
    http.ListenAndServe(":8081", nil)
}

En el ejemplo anterior, es queworker ¿Gorutina va a completar en todas las situaciones? ¿O hay algún caso especial cuando no se va a completar?

Respuestas a la pregunta(2)

Su respuesta a la pregunta