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