РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1088 of 1593 menu

Функция net.SplitHostPort

Функция net.SplitHostPort разделяет сетевой адрес вида host:port на две отдельные строки: хост и порт. В первый параметр функция принимает строку с адресом, а возвращает два значения: строку с хостом и строку с портом. Если адрес не содержит порта или имеет неверный формат, функция возвращает ошибку.

Функция корректно обрабатывает IPv6-адреса, которые заключаются в квадратные скобки, например [2001:db8::1]:8080. В этом случае хост возвращается без скобок: 2001:db8::1.

Синтаксис

host, port, err := net.SplitHostPort(hostport)

Пример sect

Давайте разделим стандартный адрес вида localhost:8080 на хост и порт:

package main import ( "fmt" "net" ) func main() { host, port, err := net.SplitHostPort("localhost:8080") if err != nil { fmt.Println(err) return } fmt.Println("Host:", host) fmt.Println("Port:", port) }

Результат выполнения кода:

"Host: localhost" "Port: 8080"

Пример sect

Давайте разделим адрес с IPv6-адресом:

package main import ( "fmt" "net" ) func main() { host, port, err := net.SplitHostPort("[2001:db8::1]:443") if err != nil { fmt.Println(err) return } fmt.Println("Host:", host) fmt.Println("Port:", port) }

Результат выполнения кода:

"Host: 2001:db8::1" "Port: 443"

Пример sect

Функция возвращает ошибку, если адрес имеет неверный формат. Давайте передадим адрес без порта:

package main import ( "fmt" "net" ) func main() { host, port, err := net.SplitHostPort("example.com") if err != nil { fmt.Println("Error:", err) return } fmt.Println("Host:", host) fmt.Println("Port:", port) }

Результат выполнения кода:

"Error: address example.com: missing port in address"

Пример sect

Также функция вернет ошибку, если порт не является числом:

package main import ( "fmt" "net" ) func main() { host, port, err := net.SplitHostPort("example.com:abc") if err != nil { fmt.Println("Error:", err) return } fmt.Println("Host:", host) fmt.Println("Port:", port) }

Результат выполнения кода:

"Error: strconv.Atoi: parsing \"abc\": invalid syntax"

Смотрите также

  • функцию net.JoinHostPort,
    которая объединяет хост и порт в один адрес
  • функцию net.ParseIP,
    которая проверяет и преобразует строку в IP-адрес
  • функцию net.Dial,
    которая устанавливает сетевое соединение по адресу
  • функцию net.LookupHost,
    которая выполняет DNS-запрос для получения IP-адресов хоста
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить