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

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

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

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

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

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

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

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

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

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

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

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

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

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