code: func (c *TransportConfig) Merge(o *TransportConfig) *TransportConfig {
  	if c == nil {
  		if o == nil {
  			return nil
  		}
  		return o.Copy()
  	}
  
  	if o == nil {
  		return c.Copy()
  	}
  
  	r := c.Copy()
  
  	if o.DialKeepAlive != nil {
  		r.DialKeepAlive = o.DialKeepAlive
  	}
  
  	if o.DialTimeout != nil {
  		r.DialTimeout = o.DialTimeout
  	}
  
  	if o.DisableKeepAlives != nil {
  		r.DisableKeepAlives = o.DisableKeepAlives
  	}
  
  	if o.IdleConnTimeout != nil {
  		r.IdleConnTimeout = o.IdleConnTimeout
  	}
  
  	if o.MaxIdleConns != nil {
  		r.MaxIdleConns = o.MaxIdleConns
  	}
  
  	if o.MaxIdleConnsPerHost != nil {
  		r.MaxIdleConnsPerHost = o.MaxIdleConnsPerHost
  	}
  
  	if o.TLSHandshakeTimeout != nil {
  		r.TLSHandshakeTimeout = o.TLSHandshakeTimeout
  	}
  
  	return r
  }
docs: // Merge combines all values in this configuration with the values in the other
  // configuration, with values in the other configuration taking precedence.
  // Maps and slices are merged, most other values are overwritten. Complex
  // structs define their own merge functionality.