Answers:
这是因为冒号后面出现的可能是端口号或服务名称。
以下是使用服务名称代替端口号的有效示例:
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
。不要混淆它们。