golang httputil.NewSingleHostReverseProxy如何读取响应并修改响应?

I've a reverse proxy like this: Iam using RoundTrip but this proxy server don't work correctly.
How to correctly read and modify response?
and somebody create proxy server via NewSingleHostReverseProxy. Please Help.

package main

import (
"bytes"
"fmt"
"io/ioutil"
"net/http"
"net/http/httputil"
"net/url"
)

type transport struct {
 http.RoundTripper
}

func (t *transport) RoundTrip(req *http.Request) (resp *http.Response, err error) {
   resp, err = t.RoundTripper.RoundTrip(req)
   if err != nil {
    return nil, err
   }

   b, err := ioutil.ReadAll(resp.Body)
   if err != nil {
    return nil, err
   }

   err = resp.Body.Close()
   if err != nil {
    return nil, err
   }

   b = bytes.Replace(b, []byte("Google"), []byte("GOOGLE"), -1)
   body := ioutil.NopCloser(bytes.NewReader(b))
   resp.Body = body
   return resp, nil
}

func sameHost(handler http.Handler) http.Handler {
 return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    r.Host = r.URL.Host
    handler.ServeHTTP(w, r)
 })
}

func main() {
  u, _ := url.Parse("http://habrahabr.ru")
  reverseProxy := httputil.NewSingleHostReverseProxy(u)
  reverseProxy.Transport = &transport{http.DefaultTransport}
  // wrap that proxy with our sameHost function
  singleHosted := sameHost(reverseProxy)
  http.ListenAndServe(":3000", singleHosted)

}

When you are going to http:// for most good sites (for example your habrahabr.ru) there is a redirect to https://, so request to http will return something like 301 Moved Permanently and you will not find content that you seek for. Also, after correct to https, make sure that site does not use javascript to load content, you can easily check this by curl: curl localhost:3000

Also use some logging to determine what's wrong.