登录
首页 >  Golang >  Go问答

为何这个函数在定义时被分为三个区域?

来源:stackoverflow

时间:2024-03-09 18:27:27 287浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《为何这个函数在定义时被分为三个区域?》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

我试图了解如何在 golang 中测试 aws 调用,但无法理解此函数发生了什么。

func (m mockedReceiveMsgs) ReceiveMessageRequest(in *sqs.ReceiveMessageInput) sqs.ReceiveMessageRequest {
    // Only need to return mocked response output
    return sqs.ReceiveMessageRequest{
        Request: &aws.Request{
            Data:        &m.Resp,
            HTTPRequest: &http.Request{},
            Retryer:     aws.NoOpRetryer{},
        },
    }
}

我知道这是一个名为 recievemessagerequest 的函数,它接受一个指向 recievemessage int 的指针并输出一个 recievemessagerequest

但是这个部分叫什么? (m mockedreceivemsgs)

我不明白为什么它不作为普通参数传递。


解决方案


ReceiveMessageRequestmockedReceiveMsgs 类型的方法,m 是接收者。如果您有一个 mockedReceiveMsgs 类型的变量 x,那么您可以将其调用为 x.ReceiveMessageRequest(arg),并且方法主体中的 m 将是 x 的副本。

您应该阅读有关 zqbcz 的内容qbstruct here

(m mockedReceiveMsgs) 表示 ReceiveMessageRequest 是 mockedReceiveMsgs 结构体的一个方法。

在OOP中你也可以理解,类的方法

到这里,我们也就讲完了《为何这个函数在定义时被分为三个区域?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>