func FuncRoundTripper(rt http.RoundTripper) DoFuncOpt {
	return func(c *DoFuncConfig) {
		c.client.Transport = rt
	}
}
RoundTripper returns a ConfigOpt that sets a Config's round-tripper.
package client
import (
	"crypto/tls"
	"net"
	"net/http"
	"time"
)
type DoFuncConfig struct {
	client    *http.Client
	dialer    *net.Dialer
	transport *http.Transport
}
type DoFuncOpt func(*DoFuncConfig)
func NewDoFunc(opt ...DoFuncOpt) HttpDoFunc {
	var (
		dialer = &net.Dialer{
			LocalAddr: &net.TCPAddr{IP: net.IPv4zero},
			KeepAlive: 30 * time.Second,
			Timeout:   5 * time.Second,
		}
		transport = &http.Transport{
			Proxy: http.ProxyFromEnvironment,
			Dial:  dialer.Dial,
			ResponseHeaderTimeout: 5 * time.Second,
			TLSClientConfig:       &tls.Config{InsecureSkipVerify: false},
			TLSHandshakeTimeout:   5 * time.Second,
		}
		config = &DoFuncConfig{
			dialer:    dialer,
			transport: transport,
			client:    &http.Client{Transport: transport},
		}
	)
	for _, o := range opt {
		if o != nil {
			o(config)
		}
	}
	return config.client.Do
}
func FuncTimeout(d time.Duration) DoFuncOpt {
	return func(c *DoFuncConfig) {
		c.transport.ResponseHeaderTimeout = d
		c.transport.TLSHandshakeTimeout = d
		c.dialer.Timeout = d
	}
}