Возврат нескольких значений
Часть раздела Основы путешествия по 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 1function возвращает два values, разделённых запятыми, и мы сохраняем оба значения, используя несколько переменных при присваивании.
Если вам нужны только некоторые возвращаемые значения, вы можете использовать пустой идентификатор _, чтобы пропустить ненужные значения:
q, _ := divide(7, 3) // игнорируем остаток
fmt.Println("Quotient:", q)Использование _ указывает Go пропустить это возвращаемое значение. Это необходимо, если вы не используете значение, поскольку Go не допускает неиспользуемые переменные.
Задание
НовичокВ этом задании ты потренируешься возвращать несколько значений из функции в Go.
У нас есть функция с именем getPersonInfo, которая должна возвращать имя и возраст человека, а также информацию о том, является ли он студентом. Твоя задача — завершить функцию, добавив соответствующую инструкцию Return.
Попробуйте сами
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)
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы сравнения и логические операторы
Операторы сравнения — Часть 1Операторы сравнения — Часть 2Логический оператор ANDЛогический оператор ORЛогический оператор NOTОсновы приоритета операторовИтоги: выполнение сравнений7Управляющие конструкции: Циклы
Что такое цикл `for`Цикл `for` — основыЦикл `for` — только условиеКлючевое слово `break`Ключевое слово `continue`Вложенные циклыИтоги — повторение действий2Переменные и базовые типы данных
Что такое переменнаяВывод типов с помощью `:=`Целые числа (int)Числа с плавающей точкойЛогический тип (Booleans)СтрокиНулевые значения (Zero Values)КонстантыПравила именованияИтоги: переменные и типы5Основы ввода-вывода
Форматированный выводСпецификаторы форматаВывод типовБазовый ввод данных пользователемИтоги: ввод и вывод8Функции
Понимание функцийОбъявление функцииВызов функцийПараметры функцииВозврат одного значенияВозврат нескольких значенийИменованные возвращаемые значенияОсновы области видимости функцийИтоги — создание переиспользуемого кода3Базовые операторы
Арифметические операторыОператор деленияОператор остатка от деленияОператор присваиванияКомбинированные операторы присваиванияИнкремент и декрементПовторение — Вычисления6Управление потоком: Условные конструкции
Оператор `if`Ключевое слово `else`Ключевое слово `else if`Затенение переменных в `if`Инициализация переменныхОператор `switch`Switch с выражениямиSwitch без выраженийКлючевое слово `fallthrough`Итоги — Принятие решенийПотренируйтесь самостоятельно: Онлайн-компилятор Go