Подтвердить что ты не робот

Golang: используйте одно значение в условии от функции, возвращающей несколько аргументов

Предположим, что в Go имеется функция, возвращающая два аргумента

func squareAndCube(int side) (square int, cube int) {
    square = side * side
    cube = square * side
    return
}

Затем вы хотите использовать первое (второе) значение этой функции в условном выражении:

square, _ := squareAndCube(n)
if square > m {
    ...
}

Однако можем ли мы сделать первые две строки в одной строке, если нам не нужен квадрат значения для использования где-либо еще? Например.

 if squareAndCube(n).First() > m {
     ...
 }
4b9b3361

Ответ 1

Вы не можете выбрать одно из нескольких возвращаемых значений, но вы можете написать что-то вроде

if square, _ := squareAndCube(n); square > m {
    // ...
}

Переменная square будет действительна только в области if. Эти "простые утверждения" могут использоваться в операциях if, и других конструкциях, таких как как for.

См. также эффективную статью в статьях if.