Skip to content

Указатели в Go: безопасное возвращение указателей

В отличие от языка C, Go — это язык, поддерживающий сборку мусора, поэтому возврат адреса локальной переменной в Go абсолютно безопасен.

Ограничения на указатели в Go

Из соображений безопасности Go накладывает некоторые ограничения на указатели, по сравнению с указателями в языке C или C++. Применяя эти ограничения, Go сохраняет преимущества указателей и в то же время избегает опасности указателей (smart pointers, green pointers).

Поддерживают ли значения указателя Go арифметические операции

В Go указатели не могут выполнять арифметические операции. Для указателя p и p++ оба p-2 являются незаконными.

Если p — это указатель на числовое значение, компиляторы рассмотрят *p++ как допустимое утверждение и обработают его как (*p)++. Приоритет оператора разыменования указателя * выше, чем у оператора инкремента ++ и оператора декремента --.

Пример: