Несколько результатов в Go
Давайте теперь будем возвращать из функции сразу два значения. После
параметров в скобках перечисляют типы результатов через запятую. В
return передают два выражения в том же порядке. Это один
возврат пары, а не два отдельных вызова.
Найдем меньшее и большее из двух целых функцией func:
package main
import "fmt"
func func(a, b int) (int, int) {
if a < b {
return a, b
}
return b, a
}
func main() {
lo, hi := func(3, 1)
fmt.Println(lo, hi) // выведет 1 3
}
Переменные lo и hi получают пару значений одной командой
присваивания. Порядок слева совпадает с порядком в return.
Если второе значение не нужно, его кладут в пустой идентификатор:
package main
import "fmt"
func func(a, b int) (int, int) {
if a < b {
return a, b
}
return b, a
}
func main() {
lo, _ := func(5, 9)
fmt.Println(lo) // выведет 5
}
Даны числа:
x := 8
y := 3
Напишите функцию func с параметрами a и b,
которая возвращает частное и остаток от деления. Выведите оба
результата для x и y.
Напишите функцию func с параметром-срезом []int,
которая возвращает первый и последний элемент. Для среза из одного
числа оба результата совпадают. Срез в вызове пусть будет непустым.
Скажите, как отбросить второй результат функции с двумя значениями, не сохраняя его.