title: In golang, how to determine the final URL after a series of redirects?
body: <p>So, I'm using the net/http package.  I'm GETting a URL that I know for certain is redirecting.  It may even redirect a couple of times before landing on the final URL.  Redirection is handled automatically behind the scenes.</p>
  
  <p>Is there an easy way to figure out what the final URL was without a hackish workaround that involves setting the CheckRedirect field on a http.Client object?</p>
  
  <p>I guess I should mention that I think I came up with a workaround, but it's kind of hackish, as it involves using a global variable and setting the CheckRedirect field on a custom http.Client.</p>
  
  <p>There's got to be a cleaner way to do it.  I'm hoping for something like this:</p>
  
  <pre><code>package main
  
  import (
    "fmt"
    "log"
    "net/http"
  )
  
  func main() {
    // Try to GET some URL that redirects.  Could be 5 or 6 unseen redirections here.
    resp, err := http.Get("http://some-server.com/a/url/that/redirects.html")
    if err != nil {
      log.Fatalf("http.Get =&gt; %v", err.Error())
    }
  
    // Find out what URL we ended up at
    finalURL := magicFunctionThatTellsMeTheFinalURL(resp)
  
    fmt.Printf("The URL you ended up at is: %v", finalURL)
  }
  </code></pre>