Yanıtlar:
Bunun nedeni, iki noktadan sonra görünen şeyin bir bağlantı noktası numarası veya hizmet adı olabilmesidir.
Aşağıda, bir bağlantı noktası numarası yerine hizmet adının kullanıldığı geçerli bir örnek verilmiştir:
listener, err := net.Listen("tcp", "localhost:https") // port 443
// ...
Belirli bir hizmet için bağlantı noktası eşlemesi kullanılarak aranabilir net.LookupPort. Unix sistemlerinde, /etc/servicesdosya eşlemeler için kaynaklanır.
Bir sayı için varsayılan değer 0'dır: eğer bir işlev
func (u * URL) Port () string
bağlantı noktası sokmak yerine dönüş numarası 0 olacaktır
Port 0, TCP / IP ağında ayrılmış bir porttur, yani TCP veya UDP mesajlarında kullanılmamalıdır. Bununla birlikte, port 0, ağ programlamasında, özellikle de Unix soket programlamasında özel bir önem taşır: sistem tarafından tahsis edilmiş, dinamik portlar talep etmek için.
çeşitli işlevlerde programlama ihtiyacıdır
url.port()bir dize döndürür ... ancak GURL ayrıca sağlar url.has_port(). Yani teorik olarak http://example.com:/path(bir portu vardır, ancak port()boş dizgedir) ile http://example.com/path(portu yoktur ) arasında ayrım yapabiliriz . Elbette GURL bunu yapmaz! Hatta http://example.com:80/pathaçıkça belirtilen bağlantı noktasının şema ile gereksiz olduğu gerekçesiyle "bir bağlantı noktasına sahip olmadığını" bildirir . Bu çılgınca , ama boş ver ... Önemli olan, Stringdeğil Optional. Onları karıştırmayın.