如何在Go中从http客户端获取x509证书

I've been over the docs at https://golang.org/pkg/ but can't make this connection.

I am creating a client and request like so (error handling removed):

client := http.Client{
    CheckRedirect: func(req *http.Request, via []*http.Request) error {
        return http.ErrUseLastResponse
    },
}
req, reqErr := http.NewRequest(requestMethod, requestUrl, nil)
resp, clientErr := client.Do(req)

I need to get a x509.Certificate to read details of the cert returned from the server, but still need the http.Repsonse as well.

How can I get a x509.Certificate instance and an http.Response while only making a single request?

The response has a TLS *tls.ConnectionState field, which in turn has:

type ConnectionState struct {
    // other fields
    PeerCertificates []*x509.Certificate   // certificate chain presented by remote peer
}

so you can just do:

resp, clientErr := client.Do(req)
if clientErr != nil {
    panic(clientErr)
}
if resp.TLS != nil {
    certificates := resp.TLS.PeerCertificates
    if len(certificates) > 0 {
        // you probably want certificates[0]
        cert := certificates[0] 
    }
}