Как изменять данные структуры через адрес в golang?

Пользователь

от roxanne.hauck , в категории: Golang , 8 месяцев назад

Как изменять данные структуры через адрес в golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от rebekah , 7 месяцев назад

@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".