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. 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...