Menu
Coddy logo textTech

Возврат нескольких значений

Часть раздела Основы путешествия по GO на Coddy — урок 56 из 109.

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

Создайте функцию, которая возвращает и частное, и остаток:

func divide(a, b int) (int, int) {
    quotient := a / b
    remainder := a % b
    return quotient, remainder
}

func main() {
    q, r := divide(7, 3)
    fmt.Println("7 ÷ 3 =", q, "with remainder", r)
}

Когда вы запустите эту программу, она выведет:

7 ÷ 3 = 2 with remainder 1

Функция возвращает два значения, разделенные запятыми, и мы получаем оба значения, используя несколько переменных в операции присваивания.

Если вам нужно только одно из возвращаемых значений, вы можете использовать пустой идентификатор _, чтобы игнорировать другое. Например, чтобы получить только частное:

q, _ := divide(7, 3)
fmt.Println("Quotient:", q)

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

challenge icon

Задание

Новичок

В этом испытании вы попрактикуетесь в возврате нескольких значений из функции в Go.

У нас есть функция с именем getPersonInfo, которая должна возвращать имя человека, возраст и информацию о том, является ли он студентом. Ваша задача — завершить функцию, добавив соответствующий оператор возврата.

Шпаргалка

Функции в Go могут возвращать несколько значений одновременно. Укажите несколько типов возвращаемых значений в скобках и возвращайте несколько значений через запятую:

func divide(a, b int) (int, int) {
    quotient := a / b
    remainder := a % b
    return quotient, remainder
}

Получайте несколько возвращаемых значений, используя несколько переменных при присваивании:

q, r := divide(7, 3)

Попробуйте сами

package main

import "fmt"

// Эта функция должна возвращать три значения: name, age и isStudent
func getPersonInfo() (string, int, bool) {
	// Переменные уже определены для вас
	name := "Alex"
	age := 25
	isStudent := true
	
	// TODO: Верните все три значения (name, age, isStudent)
	
}

func main() {
	// Вызовите функцию и сохраните возвращаемые значения
	name, age, isStudent := getPersonInfo()
	
	// Выведите значения
	fmt.Printf("Name: %s\n", name)
	fmt.Printf("Age: %d\n", age)
	fmt.Printf("Is Student: %t\n", isStudent)
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы