Я новичок в языке Go и имею только минимальный фон в C/С++, поэтому, естественно, я борюсь с идеей использования указателей и когда не использовать указатели. Хотя этот вопрос можно считать открытым, мне интересно, какие некоторые рекомендации о том, когда возвращать структуры и когда возвращать указатели (и, что то же самое, когда принимать конструкторы/указатели в качестве аргументов).
Из того, что я могу догадаться, выполняются следующие утверждения:
- structs передаются в функции по значению. То есть, копия структуры создается при передаче ее в функцию.
- Если я хочу передать структуру по ссылке, то вместо этого я бы использовал аргумент указателя в определении функции и использовал оператор addressof при вызове функции.
- Причина, по которой я хотел бы передать структуру по ссылке, состоит в том, что либо структура, которую я передаю, большая, и она будет облагать памятью, чтобы передать ее по значению (маловероятно), или если я хочу сделать изменения в копии, которую я передаю (скорее).
- В качестве следствия 3.), я должен пройти по значению, если у меня нет одной из причин, изложенных выше, по ссылке.
Правильны ли мои предположения? Или мне не хватает метки на указателях?