GO函数定义为什么和书上讲的不一样啊??

sky_9933 2022-06-19 22:32:01

go的函数定义是:

func function_name( [parameter list] ) [return_types] {
   函数体
}

如下函数为什么长这样呢? 看不明白!!

func (c *connection) clientHandshake(dialAddress string, config *ClientConfig) error {

    if config.ClientVersion != "" {

        c.clientVersion = []byte(config.ClientVersion)

    } else {

        c.clientVersion = []byte(packageVersion)

    }

    var err error

    c.serverVersion, err = exchangeVersions(c.sshConn.conn, c.clientVersion)

    if err != nil {

        return err

    }

 

    c.transport = newClientTransport(

        newTransport(c.sshConn.conn, config.Rand, true /* is client */),

        c.clientVersion, c.serverVersion, config, dialAddress, c.sshConn.RemoteAddr())

    if err := c.transport.waitSession(); err != nil {

        return err

    }

 

    c.sessionID = c.transport.getSessionID()

    return c.clientAuthenticate(config)

}

...全文
149 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
封神梦 2022-06-28
  • 打赏
  • 举报
回复

connection 结构体实现一个叫clientHandshake的接口函数,返回值是一个error,到时调用这个函数可以使用如下调用:

con :=&connection {}
err :=con.clientHandshake(参数)

程序猿CKeen 2022-06-23
  • 打赏
  • 举报
回复
这个叫函数的receiver,表示是哪个对象接收这个函数调用
zjcxc 2022-06-20
  • 打赏
  • 举报
回复 1

(c *connection) 这个表明,这个函数是特定于结构体 connection 的函数,不带的,是普通函数

2,197

社区成员

发帖
与我相关
我的任务
社区描述
go语言学习与交流版
社区管理员
  • go语言社区
  • Freeman Z
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧