为什么 Golang 的 http.DefaultClient 被导出了?
Why is Golang's http.DefaultClient exported?
很好奇Go的http
包中的变量var DefaultClient
为什么会被导出。正如变量的注释所暗示的那样,它由 Get() 等方法在内部使用。如果是这样,为什么一定要导出?
当我第一次开始编写与 HTTP 相关的代码时,我一直认为我可以只使用 DefaultClient
来发送我所有的请求,直到我发现它不是 returns 一个新的函数Client
每次,但更像是一个静态指针变量,它总是指向同一个空 Client
实例......所以如果我决定修改它的属性,所有后续的 DefaultClient 调用都会受到影响。
同样,导出这个变量的目的是什么?
我不能肯定地说(因为我没有设计包装),但是如果它被导出,它可以被修改。这意味着您可以设置超时等(默认情况下未指定)。
像http.Get
这样的便捷方法只是DefaultClient.Get
的包装器,能够事先修改DefaultClient
的超时是有意义的,但也许使用所有其他方法默认值 - 例如重用 connections/transports.
的能力
很好奇Go的http
包中的变量var DefaultClient
为什么会被导出。正如变量的注释所暗示的那样,它由 Get() 等方法在内部使用。如果是这样,为什么一定要导出?
当我第一次开始编写与 HTTP 相关的代码时,我一直认为我可以只使用 DefaultClient
来发送我所有的请求,直到我发现它不是 returns 一个新的函数Client
每次,但更像是一个静态指针变量,它总是指向同一个空 Client
实例......所以如果我决定修改它的属性,所有后续的 DefaultClient 调用都会受到影响。
同样,导出这个变量的目的是什么?
我不能肯定地说(因为我没有设计包装),但是如果它被导出,它可以被修改。这意味着您可以设置超时等(默认情况下未指定)。
像http.Get
这样的便捷方法只是DefaultClient.Get
的包装器,能够事先修改DefaultClient
的超时是有意义的,但也许使用所有其他方法默认值 - 例如重用 connections/transports.