I am following a Go tutorial and am stuck as I cant understand a particular method signature:
func (p *Page) save() error {
filename := p.Title + \".txt\
The receiver is just a special case of a parameter. Go provides syntactic sugar to attach methods to types by declaring the first parameter as a receiver.
For instance:
func (p *Page) save() error
reads "attach a method called save
that returns an error
to the type *Page
", as opposed to declaring:
func save(p *Page) error
that would read "declare a function called save
that takes one parameter of type *Page
and returns an error
"
As proof that it's only syntactic sugar you can try out the following code:
p := new(Page)
p.save()
(*Page).save(p)
Both last lines represent exactly the same method call.
Also, read this answer.
The receiver is the object on what you declare your method.
When want to add a method to an object, you use this syntax.
ex: http://play.golang.org/p/5n-N_Ov6Xz