Указатели в Go: безопасное возвращение указателей
В отличие от языка C, Go — это язык, поддерживающий сборку мусора, поэтому возврат адреса локальной переменной в Go абсолютно безопасен.
Ограничения на указатели в Go
Из соображений безопасности Go накладывает некоторые ограничения на указатели, по сравнению с указателями в языке C или C++. Применяя эти ограничения, Go сохраняет преимущества указателей и в то же время избегает опасности указателей (smart pointers, green pointers).
Поддерживают ли значения указателя Go арифметические операции
В Go указатели не могут выполнять арифметические операции. Для указателя p и p++ оба p-2 являются незаконными.
Если p — это указатель на числовое значение, компиляторы рассмотрят *p++ как допустимое утверждение и обработают его как (*p)++. Приоритет оператора разыменования указателя * выше, чем у оператора инкремента ++ и оператора декремента --.
Пример: