为什么我说如果它属于不同的类型,我可以使用package方法?

时间:2015-08-17 18:21:31

标签: go

对不起这个可怕的糟糕标题,首先,如果有人在阅读我的问题后可以提供更好的标题编辑,请提交,我现在的术语非常糟糕。

所以,简单的问题:

阅读net/http包,了解如何提出http.Get请求,并说明我要做的就是

resp, err := http.Get(blah)

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

向下滚动我在Get

下找到type Client方法

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

1 个答案:

答案 0 :(得分:3)

这是该方法的两个不同版本。在一个案例中; 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