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/services
dosya 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/path
açı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, String
değil Optional
. Onları karıştırmayın.