Pointer Receiver vs Value Receiver
Receivers are same as parameters in function in Go. They are also passed by
value when functions are called. Because of this, it is preferred to use
pointers as receivers instead of passing values directly. This is because
usually we use receivers to implement OOP programming style. If passed by value,
the properties of the objects will not be able to update.
Then the age property will not be updated. However if the receiver is passed by value like below:
For example, we have an object called "person", it has age property. Initially
when created, the person has initialised the age to 0, then we use method to
change it to 18. See code below:
package main
import (
"fmt"
)
type Person struct {
Name string
Age int
}
func main() {
person := Person{Name : "Leo"}
fmt.Println(person)
person.SetAge(18)
fmt.Println(person)
}
func (p *Person) SetAge(age int) {
p.Age = age
}
The output of the result is:
{Leo 0}
{Leo 18}
However if the receiver is passed by value like below:
func (p Person) SetAge(age int) {
p.Age = age
}
Then the age property will not be updated. However if the receiver is passed by value like below:
{Leo 0}
{Leo 0}
Comments
Post a Comment