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
}
 
    