package main
import "fmt"
type rabbit struct {
food string
}
func (r *rabbit) change_food() {
(*r).food = "salad"
}
func main() {
var roger rabbit = rabbit{food: "carrot"}
(&roger).change_food()
fmt.Println(roger) //output --> salad
}
code above works, but I'd like to save (in the pointer receiver) the pointer dereference in a variable instead of writing every time (*r) without using shorthand because in my opinion with pointer receivers they are unclear/confusing. I prefer explicit dereference for cleaner code https://tour.golang.org/moretypes/4.
I tried this code:
package main
import "fmt"
type rabbit struct {
food string
}
func (r *rabbit) change_food() {
deref := *r //deref := (*r); var deref rabbit = (*r) also don't work
deref.food = "salad"
}
func main() {
var roger rabbit = rabbit{food: "carrot"}
(&roger).change_food()
fmt.Println(roger) //output --> carrot. I wanted salad
}
to mkopriva: I'd like to not use (*r) form, like for example I did with memory address now:
package main
import "fmt"
type rabbit struct {
food string
}
func (r *rabbit) change_food() {
(*r).food = "salad"
}
func main() {
var roger rabbit = rabbit{food: "carrot"}
var p *rabbit = &roger
p.change_food() //before It was (&roger).change_food(), now code is cleaner
fmt.Println(roger) //output --> salad
}