Передача указателей в функции позволяет изменять значения, на которые они ссылаются. Однако для правильного выполнения этой операции требуется понимание внутренней работы указателей.
Чтобы изменить значение, на которое указывает указатель, важно разыменовать указатель. В Go для этой цели используется оператор звездочки (*). Разыменовав указатель, вы можете получить доступ к базовому значению, на которое он указывает.
Основное различие заключается в изменении значения указателя и изменении его значения. указывает на. Присвоение нового значения переменной-указателю изменяет только адрес, который она хранит. Например, приведенный ниже фрагмент кода не изменяет значение, указанное на:
func f(p *Test) {
p = &Test{4}
}
Чтобы изменить указанное значение, необходимо использовать оператор разыменования. Это можно сделать явно или неявно.
Явное разыменование:
func f(p *Test) {
*p = Test{4}
}
Неявное разыменование:
func f(p *Test) {
p.Value = 4
}
В обоих случаях значение, на которое указывает p, изменяется.
Передача указателя на указатель (*Test) позволяет изменить значение указателя, хранящееся в основной функции. Однако это не изменит значение, на которое указывает исходный указатель.
func f(p **Test) {
*p = &Test{4}
}
Подводя итог, при передаче указателей в функции крайне важно понимать разницу между изменением значения указателя и изменением значения, на которое он указывает. Указатели разыменования необходимы для выполнения последней операции, позволяя изменять базовые значения данных.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3