GoでHTTP Requestを投げてResponseを受け取る時、 ResponseBodyが巨大(1GB以上等)である場合を考えてstreamingしながらレスポンスを受け取りたいです。

req, err := http.Client.Do(res)

このままだとbodyが巨大な場合、Headerも読めずResponseの状態がわかりません。
何か解決法はあるでしょうか