Yes, To16 gives you a 16 byte version of an IP address, which can be IPv4
or IPv6.  Normally it is sufficient to just call To4 to determine if it is
an IPv4 address or not and assume if it is not it must be an IPv6 address:

func IsIPv4(ip net.IP) bool { return ip.To4() != nil }
func IsIPv6(ip net.IP) bool { return ip.To4() == nil } // simple version
func IsIPv6(ip net.IP) bool { return ip.To4() == nil && ip.To16() != nil  }
// more robust version

On Thu, Jun 16, 2016 at 6:00 PM, <goo...@digineo.de> wrote:

> Ok, that's sufficient for me. It's only dangerous that if you switch the
> cases (To16() first) it does not work any more.
>
> Am Donnerstag, 16. Juni 2016 17:18:37 UTC+2 schrieb Paul Borman:
>>
>> Do you mean like To4 and To16 that are defined on net.IP?
>>
>> switch {
>> case ip.To4() != nil:
>>     // is an IPv4 address
>> case ip.To16() != nil:
>>     // is an IPv6 address
>> default:
>>     // is something else
>> }
>>
> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to