Avatar ·

Cómo establecer un timeout para http.Get() en Golang?

¡Hola a todos! Soy nuevo en Go y me encontré con un problema al realizar solicitudes HTTP. Necesito enviar solicitudes GET a una API externa, pero a veces el servidor se cuelga o responde muy lentamente. En el ejemplo estándar de la documentación uso `http.Get()`, y simplemente se queda colgado indefinidamente, bloqueando todo el programa. Aquí está mi código: ```go resp, err := http.Get("https://api.example.com/data") if err != nil { log.Fatal(err) } defer resp.Body.Close() ``` El problema es que si el servidor no responde, el programa se cuelga para siempre. Quiero establecer un timeout, por ejemplo, de 5 segundos, para que en caso de que no haya respuesta, el programa arroje un error y continúe. Intenté buscar en la documentación, pero no encontré una forma sencilla de agregar un timeout a `http.Get()`. Vi algo sobre `http.Client`, pero no entendí cómo aplicarlo correctamente. Díganme, ¿cómo implementar correctamente un timeout para solicitudes HTTP en Go? ¿Es necesario crear un cliente separado o hay alguna forma de pasar el timeout directamente a `Get()`? También me interesa