Jak przekonwertować poniższy kod, aby użyć strumieni/potoków, aby nie trzeba było czytać całej zawartości w pamięci? Coś jak: http.Get("http://example.com/").Pipe("./data.txt")
Jak potokować odpowiedź HTTP do pliku w folderze Go?
package main
import ("net/http";"io/ioutil")
func main() {
resp, err := http.Get("http://example.com/")
check(err)
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
check(err)
err = ioutil.WriteFile("./data.txt", body, 0666)
check(err)
}
func check(e error) {
if e != nil {
panic(e)
}
}
Odpowiedź Get zawiera pole Body hat implementujące Reader. Możesz po prostu przekazać to do jakiejś funkcji, która zapisuje jej zawartość do twojego pliku. W żadnym momencie cała zawartość ciała nie jest ładowana do pamięci, chyba że o to poprosisz. – fuz