Methods - Software Engineering

Pointer receiver or not

drill/pointer_receiver.go
package drill

func main() {
	n := Name{first: "John", last: "Vincic"}
	n.SetFirst("Gregory")
	n.SetLast("Doe") // missing pointer receiver, works on copy

	println(n.String())
}

type Name struct {
	first string
	last  string
}

func (n *Name) SetFirst(v string) { n.first = v }
func (n Name) SetLast(v string)   { n.last = v }

func (me Name) String() string {
	return me.first + " " + me.last
}
$ go run pointer_receiver.go 
Gregory Vincic