Два результата и ошибка в Go
Сбой оформляют вторым результатом функции.
Первый результат - то, что нужно при успехе:
число, строка или другой тип. Второй имеет
тип error и сообщает, удалась ли операция.
При удачном завершении вторым значением
служит nil.
Запишем функцию, которая возвращает элемент
среза по индексу. Пока индекс в задачах
остается допустимым, второй результат -
только nil:
package main
import "fmt"
func itemAt(nums []int, index int) (int, error) {
return nums[index], nil
}
func main() {
nums := []int{1, 2, 3}
val, err := itemAt(nums, 0)
fmt.Println(val, err) // выведет 1 <nil>
}
Переменные val и err получают пару
одной командой. Порядок слева совпадает с порядком
в return: сначала элемент, затем ошибка.
Та же схема подходит для строки. Функция
возвращает имя и nil, если строка
не пустая:
package main
import "fmt"
func greet(name string) (string, error) {
return name, nil
}
func main() {
msg, err := greet("Ann")
fmt.Println(msg, err) // выведет Ann <nil>
}
Дан срез целых чисел из трех элементов.
Напишите функцию с параметрами среза и
индекса, которая возвращает элемент и
nil. Вызовите ее с индексом 0
и выведите оба результата.