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

Вебинар: Стратегия без иллюзий: как превращать цели в результаты - 19.08

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

V8037. The same argument was passed to a function multiple times. A different argument may have been intended.

06 Авг 2026

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

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

func Do(mX, mY, mZ int) {
  ....
}

func (vec Vector) Foo() {
  Do(vec.x, vec.y, vec.y)
}

Если обратить внимание на сигнатуру функции Do и её вызов, то можно заметить, что аргумент vec.y передаётся в неё дважды, и, скорее всего, в данной ситуации для параметра mZ ожидался аргумент vec.z.

Корректный вариант мог бы выглядеть так:

func (vec Vector) Foo() {
  Do(vec.x, vec.y, vec.z)
}

Также, если речь идёт о таких функциях стандартной библиотеки, как math.Min, math.Max, strings.Replace и т.д., то передача одинаковых аргументов зачастую является ошибкой.

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

var count, capacity int
....
size := math.Max(float64(count), float64(count))

Из-за опечатки функция math.Max сравнивает переменную count саму с собой и всегда будет возвращать значение этой переменной.

Исправленный код:

size := math.Max(float64(count), float64(capacity))