我正在学习Go教程,由于无法理解特定的方法签名,我被困住了:
func (p *Page) save() error {
filename := p.Title + ".txt"
return ioutil.WriteFile(filename, p.Body, 0600)
}文档对此的解释如下:
该方法的签名如下:“这是一个名为save的方法,它的接收方是p,是一个指向Page的指针。它不接受参数,并返回类型错误的值。”
我不明白听筒是什么。我会把它看作是一个参数,但是我希望参数在save()中。
发布于 2013-07-29 19:45:28
接收器只是参数的特例。Go通过将第一个参数声明为接收方来提供语法糖,以便将方法附加到类型。
例如:
func (p *Page) save() error读取“将一个名为save的方法附加到*Page__类型中,而不是声明:
func save(p *Page) error“声明一个名为save的函数,该函数接受*Page类型的一个参数,并返回一个error__”。
为了证明它只是语法糖,您可以尝试以下代码:
p := new(Page)
p.save()
(*Page).save(p)最后两行都表示完全相同的方法调用。
另外,请阅读this answer。
https://stackoverflow.com/questions/17932722
复制相似问题