Тип net.IP
Тип net.IP представляет IP-адрес в виде среза байтов.
Он поддерживает как IPv4 (4 байта), так и IPv6 (16 байт) адреса.
Этот тип является основным для работы с IP-адресами в Go и предоставляет
методы для преобразования в строку, проверки типа адреса и сравнения.
Создание IP-адреса с помощью ParseIP
Функция net.ParseIP преобразует строковое представление
IP-адреса в тип net.IP. Если строка не является корректным
адресом, функция возвращает nil.
package main
import (
"fmt"
"net"
)
func main() {
ip := net.ParseIP("192.168.1.1")
fmt.Println(ip)
}
Результат выполнения кода:
"192.168.1.1"
Создание IP-адреса из байтов
Тип net.IP является псевдонимом для []byte,
поэтому его можно создать напрямую из среза байтов.
package main
import (
"fmt"
"net"
)
func main() {
ip := net.IP{192, 168, 1, 1}
fmt.Println(ip)
}
Результат выполнения кода:
"192.168.1.1"
Проверка типа адреса
Метод IsLoopback проверяет, является ли адрес
локальным (127.0.0.1 для IPv4 или ::1 для IPv6).
package main
import (
"fmt"
"net"
)
func main() {
ip := net.ParseIP("127.0.0.1")
res := ip.IsLoopback()
fmt.Println(res)
}
Результат выполнения кода:
true
Проверка IPv4
Метод To4 преобразует адрес в IPv4.
Если адрес не является IPv4, метод возвращает nil.
package main
import (
"fmt"
"net"
)
func main() {
ip := net.ParseIP("192.168.1.1")
ipv4 := ip.To4()
fmt.Println(ipv4)
}
Результат выполнения кода:
"192.168.1.1"
Сравнение IP-адресов
Метод Equal проверяет равенство двух IP-адресов.
Он учитывает, что IPv4 адрес может быть представлен как IPv6
совместимый адрес.
package main
import (
"fmt"
"net"
)
func main() {
ip1 := net.ParseIP("192.168.1.1")
ip2 := net.ParseIP("192.168.1.1")
res := ip1.Equal(ip2)
fmt.Println(res)
}
Результат выполнения кода:
true
Смотрите также
-
функцию
net.ParseIP,
которая преобразует строку в IP-адрес -
функцию
net.ParseCIDR,
которая разбирает CIDR-нотацию IP-адреса -
функцию
net.LookupIP,
которая выполняет DNS-запрос для получения IP-адресов -
тип
net.IPNet,
который представляет IP-сеть с маской