Почему порт является строкой, а не целым?

Метод 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: для запроса системных распределенных динамических портов.

это необходимость программирования в нескольких функциях