对于我正在开发的一个程序,我必须判断一个IP(将我连接到Internet的IP)是公共的还是私有的.为此,我需要区分IP是IPv4还是IPv6.

我想根据IP的长度进行判断:

conn, err := net.Dial("udp", "8.9.10.11:2342")
if err != nil {
    fmt.Println("Error", err)
}

localaddr := conn.LocalAddr()

addr, _ := net.ResolveUDPAddr("udp", localaddr.String())

ip := addr.IP

fmt.Println(ip)
fmt.Println(len(ip))

嗯,我的IP是192.168.2.100,也就是IPv4,但是len(Ip)告诉我长度是16,即IPv6. 我的错误是什么?是否有其他方法可以区分IPv4和IPv6,它们始终有效?