AB
Size: a a a
AB
AB
AB
AB
AB
ID
JK
func f(…)(r1 type_1, …, rn type_n, err error) { // Проверяемая функция
// Возвращает n+1 результатов: r1... rn, err типа error.
}
func g(…)(…, err error) { // Вызов функции f() с проверкой ошибки:
…
x1, x2,… xn = try(f(…)) // Используется встроенная конструкция try:
// если f() вернула в последнем результате не nil, то g() автоматически завершится,
// вернув в СВОЁМ последнем результате это же значение.
…
}
func t(…)(…, err error) { // Аналог g() без использования нового синтаксиса:
t1, t2,… tn, te := f(…) // Вызов f() с сохранением результатов во временных переменных.
if te != nil { // Проверка кода возврата на равенство nil
err = te // Если код возврата - не nil, то он записывается в последний результат t(),
return // после чего t() немедленно завершается.
}
// Если ошибки не было,
x1, x2,… xn = t1, t2,… tn // … переменные x1…xn получают значения
// и исполнение t() продолжается.
…
}
ID
ID
AB
AB