Метод Port
возвращает строку, а не целое число. В чем причина этого и безопасно ли префикс порта ":"?
Почему порт является строкой, а не целым?
Ответ 1
Это происходит потому, что то, что появляется после двоеточия, может быть либо номером порта, либо именем службы.
Ниже приведен пример, в котором вместо имени порта используется имя службы:
listener, err := net.Listen("tcp", "localhost:https") // port 443
// ...
Отображение портов для конкретной услуги можно найти с помощью net.LookupPort
. В системах Unix файл /etc/services
используется для сопоставлений.
Ответ 2
Для числа значение по умолчанию равно 0: если функция
func (u * URL) Port () string
return number вместо sting порт будет 0
Порт 0 - зарезервированный порт в сети TCP/IP, что означает, что он не должен использоваться в сообщениях TCP или UDP. Однако порт 0 имеет особое значение в сетевом программировании, в частности, в программировании сокетов Unix: для запроса системных распределенных динамических портов.
это необходимость программирования в нескольких функциях