func Proxy(addr string) Option {
	return func(o *Options) {
		o.Proxy = addr
	}
}
Proxy sets the proxy address
package client
import (
	"context"
	"time"
	"github.com/micro/micro/v3/service/broker"
	"github.com/micro/micro/v3/service/broker/memory"
	"github.com/micro/micro/v3/service/network/transport"
	thttp "github.com/micro/micro/v3/service/network/transport/http"
	"github.com/micro/micro/v3/service/registry"
	"github.com/micro/micro/v3/service/router"
	regRouter "github.com/micro/micro/v3/service/router/registry"
	"github.com/micro/micro/v3/util/codec"
	"github.com/micro/micro/v3/util/selector"
	"github.com/micro/micro/v3/util/selector/roundrobin"
)
type Options struct {
	ContentType string
	Proxy string
	Broker    broker.Broker
	Codecs    map[string]codec.NewCodec
	Router    router.Router
	Selector  selector.Selector
	Transport transport.Transport
	Lookup LookupFunc
	PoolSize int
	PoolTTL  time.Duration
	Wrappers []Wrapper
	CallOptions CallOptions
	Context context.Context
}
type CallOptions struct {
	Address []string
	Backoff BackoffFunc
	DialTimeout time.Duration
	Retries int
	Retry RetryFunc
	RequestTimeout time.Duration
	Router router.Router
	Selector selector.Selector
	SelectOptions []selector.SelectOption
	StreamTimeout time.Duration
	AuthToken bool
	Network string
	CallWrappers []CallWrapper
	Context context.Context
}
type PublishOptions struct {
	Exchange string
	Context context.Context
}
type MessageOptions struct {
	ContentType string
}
type RequestOptions struct {
	ContentType string
	Stream      bool
	Context context.Context
}
func NewOptions(options ...Option) Options {
	opts := Options{
		Context:     context.Background(),
		ContentType: "application/protobuf",
		Codecs:      make(map[string]codec.NewCodec),
		CallOptions: CallOptions{
			Backoff:        DefaultBackoff,
			Retry:          DefaultRetry,
			Retries:        DefaultRetries,
			RequestTimeout: DefaultRequestTimeout,
			DialTimeout:    transport.DefaultDialTimeout,
		},
		Lookup:    LookupRoute,
		PoolSize:  DefaultPoolSize,
		PoolTTL:   DefaultPoolTTL,
		Broker:    memory.NewBroker(),
		Router:    regRouter.NewRouter(),
		Selector:  roundrobin.NewSelector(),
		Transport: thttp.NewTransport(),
	}
	for _, o := range options {
		o(&opts)
	}
	return opts
}
func Broker(b broker.Broker) Option {
	return func(o *Options) {
		o.Broker = b
	}
}
func Codec(contentType string, c codec.NewCodec) Option {
	return func(o *Options) {
		o.Codecs[contentType] = c
	}
}
func ContentType(ct string) Option {
	return func(o *Options) {
		o.ContentType = ct
	}
}