V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
GjriFeu
V2EX  ›  程序员

Golang 语法问题

  •  
  •   GjriFeu · 2016-11-09 15:11:14 +08:00 · 2663 次点击
    这是一个创建于 2935 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    第 1 条附言  ·  2016-11-14 17:32:20 +08:00
    - -
    go 中一个文件想要引用另一个文件中的函数怎么写
    18 条回复    2016-11-14 17:32:50 +08:00
    JoshuaJin
        1
    JoshuaJin  
       2016-11-09 15:23:51 +08:00
    函数定义类型, 即这个函数是定义在某个类型上的。如你举的这个例子,可以使用如下代码调用这个函数:
    var c *Client
    .......
    c.Do(req, resp)
    goophy
        2
    goophy  
       2016-11-09 15:25:02 +08:00
    Do 是 *Client 实例的方法。
    ```golang
    c := new(Client)
    //or
    c := &Client{}

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

    ```golang
    func Do(c *Client, req *Request) (resp *Response, err error)
    ```
    GjriFeu
        7
    GjriFeu  
    OP
       2016-11-09 15:35:34 +08:00
    @kiwi95 这个解释满分
    GjriFeu
        8
    GjriFeu  
    OP
       2016-11-09 15:37:09 +08:00
    @jerray 像 C++的 this 指针么。。
    palmers
        9
    palmers  
       2016-11-09 15:41:39 +08:00
    golang 的语法好新奇呀
    GjriFeu
        10
    GjriFeu  
    OP
       2016-11-09 15:43:50 +08:00
    @palmers 看着有点别扭
    pathletboy
        11
    pathletboy  
       2016-11-09 15:43:57 +08:00
    @GjriFeu 从 c++角度看,本质就是 this 指针,可以自定义名。
    palmers
        12
    palmers  
       2016-11-09 16:58:44 +08:00
    @GjriFeu 恩恩 尤其是从 javascript java python 这些语言的角度看 真的很别扭
    janxin
        13
    janxin  
       2016-11-09 19:05:56 +08:00 via iPhone
    @palmers golamg 没有类
    maomaomao001
        14
    maomaomao001  
       2016-11-09 20:23:16 +08:00 via Android
    这写法~~怎么感觉比 C 还难
    mingyun
        15
    mingyun  
       2016-11-09 23:16:18 +08:00
    初学 golang 也感觉这语言好怪异
    bluefalconjun
        16
    bluefalconjun  
       2016-11-10 10:00:30 +08:00
    这是 method 扩展可以加入 Interface
    这部分虽然有点绕... 但是很有用啊
    beiping96
        17
    beiping96  
       2016-11-10 17:15:28 +08:00
    GjriFeu
        18
    GjriFeu  
    OP
       2016-11-14 17:32:50 +08:00
    up.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2802 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 12:58 · PVG 20:58 · LAX 04:58 · JFK 07:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.