#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")