Golang 语法问题

2016-11-09 15:11:14 +08:00
 GjriFeu

func (c *Client) Do(req *Request) (resp *Response, err error)

( c *Client )加在这里是什么意思啊 // net/http 包中的方法 初学 Go ,望各位指导

2664 次点击
所在节点    程序员
18 条回复
JoshuaJin
2016-11-09 15:23:51 +08:00
函数定义类型, 即这个函数是定义在某个类型上的。如你举的这个例子,可以使用如下代码调用这个函数:
var c *Client
.......
c.Do(req, resp)
goophy
2016-11-09 15:25:02 +08:00
Do 是 *Client 实例的方法。
```golang
c := new(Client)
//or
c := &Client{}

c.Do(...)
```
demonchang
2016-11-09 15:31:11 +08:00
kiwi95
2016-11-09 15:31:38 +08:00
这就是 golang 的 receiver 啊,为类型定义方法,或者说绑定方法 https://tour.golang.org/methods/3
GjriFeu
2016-11-09 15:32:16 +08:00
@JoshuaJin
@goophy
奥懂了谢谢
jerray
2016-11-09 15:33:05 +08:00
我觉得写成这样你就明白了:

```golang
func Do(c *Client, req *Request) (resp *Response, err error)
```
GjriFeu
2016-11-09 15:35:34 +08:00
@kiwi95 这个解释满分
GjriFeu
2016-11-09 15:37:09 +08:00
@jerray 像 C++的 this 指针么。。
palmers
2016-11-09 15:41:39 +08:00
golang 的语法好新奇呀
GjriFeu
2016-11-09 15:43:50 +08:00
@palmers 看着有点别扭
pathletboy
2016-11-09 15:43:57 +08:00
@GjriFeu 从 c++角度看,本质就是 this 指针,可以自定义名。
palmers
2016-11-09 16:58:44 +08:00
@GjriFeu 恩恩 尤其是从 javascript java python 这些语言的角度看 真的很别扭
janxin
2016-11-09 19:05:56 +08:00
@palmers golamg 没有类
maomaomao001
2016-11-09 20:23:16 +08:00
这写法~~怎么感觉比 C 还难
mingyun
2016-11-09 23:16:18 +08:00
初学 golang 也感觉这语言好怪异
bluefalconjun
2016-11-10 10:00:30 +08:00
这是 method 扩展可以加入 Interface
这部分虽然有点绕... 但是很有用啊
beiping96
2016-11-10 17:15:28 +08:00
GjriFeu
2016-11-14 17:32:50 +08:00
up.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/319280

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX