Відповіді:
Це тому, що те, що з’являється після двокрапки, може бути або номером порту, або назвою послуги.
Далі наведено дійсний приклад, коли замість номера порту використовується ім’я служби:
listener, err := net.Listen("tcp", "localhost:https") // port 443
// ...
Зображення портів для певної послуги можна переглянути за допомогою net.LookupPort
. У системах Unix /etc/services
файл збирається для відображень.
Для числа значення за замовчуванням дорівнює 0: якщо функція
func (u * URL) Port () string
зворотний номер замість жадання порту буде 0
Порт 0 є зарезервованим портом у мережі TCP / IP, що означає, що він не повинен використовуватися в повідомленнях TCP або UDP. Однак порт 0 має особливе значення в мережевому програмуванні, зокрема програмуванні сокетів Unix: для запиту системних, динамічних портів.
це потреба в програмуванні на кілька функцій
url.port()
повертає рядок ... але GURL також надає url.has_port()
. Тож теоретично ми могли б відрізнити http://example.com:/path
(має порт, але port()
порожній рядок) від http://example.com/path
(не має порту). Звичайно, сам GURL цього не робить! Він навіть повідомляє, що http://example.com:80/path
"не має порту", виходячи з того, що чітко вказаний порт є зайвим у цій схемі. Що божевільно , але неважливо ... Справа в тому, що String
це не так Optional
. Не плутайте їх.