Преобразование строки в сеть.Addr

#go

#Вперед

Вопрос:

Как это можно сделать? Я хотел бы знать, как разобрать строку в сеть.Addr в Go. Как я вижу, есть только анализаторы для CIDR, IP и MAC.

Комментарии:

1. net.Addr это интерфейс и может быть многих типов. Вы ищете ParseIP ?

2. Я ищу net.Addr , потому что он используется с UDP-соединениями вместе с WriteTo методом.

3. @thwd можете ли вы опубликовать это как ответ?

Ответ №1:

Используйте функции net.Resolve* для синтаксического анализа адресов. Функции возвращают значения, удовлетворяющие сети.Интерфейс Addr.

Функция net.ResolveIPAddr анализирует адрес конечной точки IP:

  ip, err := net.ResolveIPAddr("ip", "203.0.113.0")
 if err != nil {
      // handle error
 }
  

Используйте net.ResolveUPDAddr для анализа адреса конечной точки UDP (сценарий, упомянутый в комментариях к вопросу). Адреса конечной точки UDP — это конечная точка IP и порт.

  ip, err := net.ResolveUDPAddr("udp", "203.0.113.0:53")
 if err != nil {
      // handle error
 }
  

Переменные ip в приведенных выше фрагментах вводятся для определенного типа адреса, но могут использоваться везде net.Addr , где требуется a .

Комментарии:

1. Также, если кто-то найдет это, пожалуйста, попробуйте udp вместо ip этого в первом аргументе, если больше ничего не работает.

2. То же самое здесь. Пришлось использовать «udp» вместо «ip» для net.ResolveUDPAddr

Ответ №2:

Используйте net.ResolveIPAddr

 var ip net.Addr

ip, _ = net.ResolveIPAddr("ip", "1.1.1.1")