golang метод, изменение данных структуры

Подскажите, пожалуйста, почему не срабатывает: mest.st("iii", 33)

import "fmt"

type Mstruct struct {
   name string
   age  int
}

func (m Mstruct) st(a string, b int) {
   m.name = a
   m.age = b
}

func main() {

   mest := Mstruct{"eee", 11}

   fmt.Println(mest)

   mest.st("iii", 33)

   fmt.Println(mest)

}

а если изменить на:

var mest Mstruct

func (m Mstruct) st(a string, b int) {
  mest.name = a
  mest.age = b
}

то отработает.


Ответы (1 шт):

Автор решения: Антон

При вызове метода, объект структуры, для которого определен метод, передается в него по значению. Чтобы изменить объект структуры нужно использовать указатель

func (m *Mstruct) st(a string, b int) {
   m.name = a
   m.age = b
}
→ Ссылка