func (sf AddrSpec) Address() string {
	if sf.FQDN != "" {
		return fmt.Sprintf("%s (%s):%d", sf.FQDN, sf.IP, sf.Port)
	}
	return fmt.Sprintf("%s:%d", sf.IP, sf.Port)
}
Address returns a string which may be specified
if IPv4/IPv6 will return < ip:port >
if FQDN will return < domain ip:port >
Note: do not used to dial, Please use String
package statute
import (
	"fmt"
	"net"
	"strconv"
)
type AddrSpec struct {
	FQDN string
	IP   net.IP
	Port int
	AddrType byte
}
func (sf *AddrSpec) String() string {
	if len(sf.IP) != 0 {
		return net.JoinHostPort(sf.IP.String(), strconv.Itoa(sf.Port))
	}
	return net.JoinHostPort(sf.FQDN, strconv.Itoa(sf.Port))
}