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
}