Go 为什么这个函数在声明时有三个部分?
我试图理解如何在golang中测试AWS调用,但无法理解此函数发生了什么Go 为什么这个函数在声明时有三个部分?,go,functional-programming,Go,Functional Programming,我试图理解如何在golang中测试AWS调用,但无法理解此函数发生了什么 func (m mockedReceiveMsgs) ReceiveMessageRequest(in *sqs.ReceiveMessageInput) sqs.ReceiveMessageRequest { // Only need to return mocked response output return sqs.ReceiveMessageRequest{ Request: &a
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{},
},
}
}
我知道它是一个名为ReceiveMessageRequest的函数,它获取指向ReceiveMessage int的指针并输出ReceiveMessageRequest
但是这个部分叫什么?
m mockedReceiveMsgs
我不明白为什么它不能作为普通参数传递。您应该阅读有关struct的内容
m mockedReceiveMsgs,表示ReceiveMessageRequest是mockedReceiveMsgs结构的一个方法
在OOP中也可以理解这一点,类的方法ReceiveMessageRequest是mockedReceiveMsgs类型的方法,m是接收方。如果您有一个类型为mockedReceiveMsgs的变量x,那么您可以将其称为x.ReceiveMessageRequestarg,并且方法正文中的m将是x的副本。:接收器通过方法名称前面的额外参数部分指定。该参数部分必须声明一个非可变参数,即接收器。请至少完成Go教程。它不需要很长时间,涵盖了所有的语言基础知识。