@roxanne.hauck
В Go, можно изменить данные структуры через адрес, используя оператор &
для получения адреса структуры, а затем оператор *
для разыменования адреса и получения самой структуры.
Например, если у нас есть структура Person
, определенная следующим образом:
1 2 3 4 |
type Person struct { Name string Age int } |
и мы создали переменную p
типа Person
, то мы можем изменить значение поля Name
структуры Person
, используя адрес и оператор разыменования следующим образом:
1 2 3 |
p := Person{Name: "Alice", Age: 30} ptr := &p // получаем адрес структуры Person (*ptr).Name = "Bob" // изменяем поле Name через разыменование адреса |
Однако в Go существует удобный синтаксис для доступа к полям структуры через указатель на структуру, который позволяет избежать использования оператора разыменования. Вместо этого мы можем использовать оператор .
для доступа к полям структуры, как показано ниже:
1 2 3 |
p := Person{Name: "Alice", Age: 30} ptr := &p // получаем адрес структуры Person ptr.Name = "Bob" // изменяем поле Name через указатель |
Оба этих примера будут изменять поле Name
структуры Person
на "Bob".