Avatar ·

Wie setze ich ein Timeout für http.Get() in Golang?

Hallo zusammen! Ich bin neu in Go und habe ein Problem bei der Durchführung von HTTP-Anfragen. Ich muss GET-Anfragen an eine externe API senden, aber manchmal hängt der Server oder antwortet sehr langsam. Im Standardbeispiel aus der Dokumentation verwende ich `http.Get()`, und es hängt einfach endlos und blockiert das gesamte Programm. Hier ist mein Code: ```go resp, err := http.Get("https://api.example.com/data") if err != nil { log.Fatal(err) } defer resp.Body.Close() ``` Das Problem ist, dass das Programm für immer hängt, wenn der Server nicht antwortet. Ich möchte ein Timeout setzen, z.B. 5 Sekunden, damit das Programm im Falle einer fehlenden Antwort einen Fehler ausgibt und weiterläuft. Ich habe versucht, in der Dokumentation zu suchen, aber keinen einfachen Weg gefunden, ein Timeout zu `http.Get()` hinzuzufügen. Ich habe etwas über `http.Client` gesehen, aber nicht verstanden, wie man es richtig anwendet. Könnt ihr mir sagen, wie man ein Timeout für HTTP-Anfragen in Go richtig implementiert? Muss ich einen separaten Client erstellen oder gibt es eine Möglichkeit, das Timeout direkt an `Get()` zu übergeben? Mich interessiert auch