为什么 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.

的能力