Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top

Вебинар: Безопасная разработка и сертификация: практика, инструменты, перспективы - 03.12

menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V8041. Modifying a field of a value receiver will have no effect. Consider using a pointer receiver.

10 Ноя 2026

Анализатор обнаружил метод, который изменяет поле получателя, передаваемого по значению. Такие изменения затрагивают только копию структуры и не оказывают никакого влияния на исходный объект.

Рассмотрим пример:

type Buffer struct {
  data []byte
}

func (b Buffer) Append(value byte) {
  b.data = append(b.data, value)
}

Метод Append объявлен с получателем Buffer, который передаётся по значению. При каждом вызове метода будет создана копия объекта, поэтому выражение b.data = append(b.data, value) только изменяет поле этой копии. После завершения работы метода исходный объект остаётся неизменным.

Если метод должен изменять объект, следует использовать получатель-указатель:

func (b *Buffer) Append(value byte) {
  b.data = append(b.data, value)
}