func SockaddrToTCPOrUnixAddr(sa unix.Sockaddr) net.Addr {
	if addr := SockaddrToUnixAddr(sa); addr != nil {
		return addr
	}

	ip, zone := SockaddrToIPAndZone(sa)
	switch sa := sa.(type) {
	case *unix.SockaddrInet4:
		return &net.TCPAddr{IP: ip, Port: sa.Port}
	case *unix.SockaddrInet6:
		return &net.TCPAddr{IP: ip, Port: sa.Port, Zone: zone}
	}
	return nil
}
// SockaddrToTCPOrUnixAddr converts a Sockaddr to a net.TCPAddr or net.UnixAddr.
// Returns nil if conversion fails.
SockaddrToTCPOrUnixAddr converts a Sockaddr to a net.TCPAddr or net.UnixAddr.
Returns nil if conversion fails.
// SockaddrToTCPOrUnixAddr converts a Sockaddr to a net . TCPAddr or net . UnixAddr . // Returns nil if conversion fails .
func SockaddrToTCPOrUnixAddr(sa unix.Sockaddr) net.Addr {
	if addr := SockaddrToUnixAddr(sa); addr != nil {
		return addr
	}
	ip, zone := SockaddrToIPAndZone(sa)
	switch sa := sa.(type) {
	case *unix.SockaddrInet4:
		return &net.TCPAddr{IP: ip, Port: sa.Port}
	case *unix.SockaddrInet6:
		return &net.TCPAddr{IP: ip, Port: sa.Port, Zone: zone}
	}
	return nil
}
func SockaddrToTCPOrUnixAddr ( sa unix . Sockaddr ) net . Addr { if addr := SockaddrToUnixAddr ( sa ) ; addr != nil { return addr } ip , zone := SockaddrToIPAndZone ( sa ) switch sa := sa . ( type ) { case * unix . SockaddrInet4 : return & net . TCPAddr { IP : ip , Port : sa . Port } case * unix . SockaddrInet6 : return & net . TCPAddr { IP : ip , Port : sa . Port , Zone : zone } } return nil }
SockaddrToTCPOrUnixAddr converts a Sockaddr to a net.TCPAddr or net.UnixAddr.
SockaddrToTCPOrUnixAddr converts a Sockaddr to a net . TCPAddr or net . UnixAddr .