gpt4 book ai didi

go - 为什么我可以使用 packages 方法,当它说它属于不同的类型时?

转载 作者:IT王子 更新时间:2023-10-29 02:33:56 24 4
gpt4 key购买 nike

对于可怕的标题感到抱歉,首先,如果有人在阅读我的问题后可以提供更好的标题的编辑,请提交,我现在的术语很糟糕。

所以,简单的问题:

通读 net/http 包,了解如何发出 http.Get 请求,它说我所要做的就是

resp, err := http.Get(blah)

好吧,向下滚动列表以查看此Get 函数采用了哪些参数,我无法直接在http 包的函数下找到它

所以向下滚动我在 type Client 下找到了一个 Get 方法

那么为什么我不必首先 http.Client 然后向它​​发出 Get 请求呢?只是有点困惑。谢谢你的帮助。

最佳答案

这是该方法的两个不同版本。在一种情况下; http.Get 它是在包级别定义的,这很像 C# 或 Java 中的静态方法。另一方面,它有一个类型为 http.Client 的接收器,它更像是 C# 或 Java 中该类型的实例方法。 http.Client 类型与您在同一包中所期望的一样。

包级获取: http://golang.org/pkg/net/http/#Get

 func Get(url string) (resp *Response, err error)
//^ absence of receiver = package scoped
//^ uppercase method name so it is 'exported' which is about like public

客户端接收者得到: http://golang.org/pkg/net/http/#Client.Get

   func (c *Client) Get(url string) (resp *Response, err error)
//^ this is the receiver

关于go - 为什么我可以使用 packages 方法,当它说它属于不同的类型时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32057142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com