Возврат нескольких значений
Часть раздела Основы путешествия по 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)Использование _ сообщает Go, что это возвращаемое значение следует игнорировать. Это необходимо, когда вы не используете значение, так как Go не допускает наличия неиспользуемых переменных.
Задание
НовичокВ этом испытании вы попрактикуетесь в возврате нескольких значений из функции в Go.
У нас есть функция с именем getPersonInfo, которая должна возвращать имя человека, возраст и информацию о том, является ли он студентом. Ваша задача — завершить функцию, добавив соответствующий оператор возврата.
Попробуйте сами
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`Итоги — Принятие решений