func (ei *endpointInfo) SetTag(key, value string) error {
	ei.tags[key] = value
	return nil
}
SetTag implements the MutableEndpointInfo interface.
package rpcinfo
import (
	"net"
	"sync"
)
var (
	_            EndpointInfo        = &endpointInfo{}
	_            MutableEndpointInfo = &endpointInfo{}
	endpointPool sync.Pool
)
type endpointInfo struct {
	serviceName string
	method      string
	address     net.Addr
	tags        map[string]string
}
func init() {
	endpointPool.New = newEndpointInfo
}
func newEndpointInfo() interface{} {
	return &endpointInfo{tags: make(map[string]string)}
}
func (ei *endpointInfo) ServiceName() string {
	return ei.serviceName
}
func (ei *endpointInfo) Method() string {
	return ei.method
}
func (ei *endpointInfo) Address() net.Addr {
	return ei.address
}
func (ei *endpointInfo) Tag(key string) (value string, exist bool) {
	value, exist = ei.tags[key]
	return
}
func (ei *endpointInfo) DefaultTag(key, def string) string {
	if value, exist := ei.tags[key]; exist && value != "" {
		return value
	}
	return def
}
func (ei *endpointInfo) SetServiceName(serviceName string) error {
	ei.serviceName = serviceName
	return nil
}
func (ei *endpointInfo) SetMethod(method string) error {
	ei.method = method
	return nil
}
func (ei *endpointInfo) SetAddress(addr net.Addr) error {
	ei.address = addr
	return nil
}