Вебинар: Стратегия без иллюзий: как превращать цели в результаты - 19.08
Анализатор обнаружил потенциальную ошибку, связанную с передачей одинаковых аргументов при вызове метода или функции.
Рассмотрим пример 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))
Была ли полезна эта страница документации?
Мы ответим вам на:
Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок: