Для программы, над которой я работаю, я должен проверить, является ли IP (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, который работает всегда?