I was using gopkg.in/yaml.v2 to unmarshal a .yaml file into a struct and couldn’t find a solution to unmarshal an url string into url.URL.
Trying to just use url.URL fails with:
Error initializing configuration: yaml: unmarshal errors:\n line 54: cannot unmarshal !!str `http://...` into url.URL
This is because, url.URL doesn’t adhere to yaml.v2.Unmarshaler interface.
So here is my solution, feel free to copy paste it!
type YAMLURL struct {
    *url.URL
}
func (j *YAMLURL) UnmarshalYAML(unmarshal func(interface{}) error) error {
    var s string
    err := unmarshal(&s)
    if err != nil {
        return err
    }
    url, err := url.Parse(s)
    j.URL = url
    return err
}
And here is how to use it:
type Config struct{
    url YAMLURL `yaml:"url"`
}
Thanks for reading!

