GO Go  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Функции и несколько возвращаемых значений

Проверяет передачу аргументов, несколько результатов, вариативные параметры и осторожное использование именованных возвращаемых значений. В тесте 20 вопросов, из них 12 требуют чтения кода, команд или диагностических фрагментов. Задания опираются на устойчивые правила современного Go; если поведение зависит от версии, это оговорено в самом вопросе.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. В каждом вопросе верен только один вариант. После завершения вы увидите общий результат и результаты по 4 тематическим шкалам с объяснениями и практическими рекомендациями.
Вопрос 1 из 20
Перед публикацией кода по теме «Параметры» нужно уточнить контракт. Какое наблюдение о работе кода будет верным?
GoПараметры: результат выполнения
// Фрагмент для трассировки.
package main
import "fmt"
func touch(xs []int) { xs[0] = 9; xs = append(xs, 10) }
func main() {
    xs := []int{1, 2}
    touch(xs)
    fmt.Println(xs)
}
Вопрос 2 из 20
В рабочем примере по теме «Параметры» важно отделить гарантию от догадки. Какую правку разумнее внести до объединения изменений?
GoПараметры: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import "fmt"
func touch(xs []int) { xs[0] = 9; xs = append(xs, 10) }
func main() {
    xs := []int{1, 2}
    touch(xs)
    fmt.Println(xs)
}
Вопрос 3 из 20
Фрагмент относится к теме «Параметры». Какое правило Go непосредственно объясняет поведение фрагмента?
GoПараметры: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import "fmt"
func touch(xs []int) { xs[0] = 9; xs = append(xs, 10) }
func main() {
    xs := []int{1, 2}
    touch(xs)
    fmt.Println(xs)
}
Вопрос 4 из 20
На ревью разбирают тему «Параметры». Где заканчивается гарантия показанного приёма?
Вопрос 5 из 20
В разделе «Параметры» показан конкретный случай. Когда этот приём помогает, а когда начинает мешать?
Вопрос 6 из 20
В рабочем примере по теме «Возврат значений» важно отделить гарантию от догадки. Каков наблюдаемый результат этого кода?
GoВозврат значений: результат выполнения
// Фрагмент для трассировки.
package main
import "strconv"
func parse() (int, error) { return strconv.Atoi("7") }
func main() { n, err := parse(); _, _ = n, err }
Вопрос 7 из 20
Фрагмент относится к теме «Возврат значений». Какое изменение лучше всего укрепит контракт этого фрагмента?
GoВозврат значений: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import "strconv"
func parse() (int, error) { return strconv.Atoi("7") }
func main() { n, err := parse(); _, _ = n, err }
Вопрос 8 из 20
На ревью разбирают тему «Возврат значений». Какое утверждение точнее всего описывает действующую гарантию?
GoВозврат значений: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import "strconv"
func parse() (int, error) { return strconv.Atoi("7") }
func main() { n, err := parse(); _, _ = n, err }
Вопрос 9 из 20
В разделе «Возврат значений» показан конкретный случай. Что может изменить вывод при небольшом изменении условий?
Вопрос 10 из 20
Команда проверяет решение по теме «Возврат значений». Как решение влияет на читаемость и надёжность?
Вопрос 11 из 20
Фрагмент относится к теме «Вариативные параметры». Что увидит вызывающий код после выполнения?
GoВариативные параметры: результат выполнения
// Фрагмент для трассировки.
package main
func sum(xs ...int) int { n := 0; for _, x := range xs { n += x }; return n }
func main() { xs := []int{1,2,3}; _ = sum(xs...) }
Вопрос 12 из 20
На ревью разбирают тему «Вариативные параметры». Как подготовить этот код к реальному использованию?
GoВариативные параметры: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
func sum(xs ...int) int { n := 0; for _, x := range xs { n += x }; return n }
func main() { xs := []int{1,2,3}; _ = sum(xs...) }
Вопрос 13 из 20
В разделе «Вариативные параметры» показан конкретный случай. Какой контракт определяет результат показанного кода?
GoВариативные параметры: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
func sum(xs ...int) int { n := 0; for _, x := range xs { n += x }; return n }
func main() { xs := []int{1,2,3}; _ = sum(xs...) }
Вопрос 14 из 20
Команда проверяет решение по теме «Вариативные параметры». Какое допущение здесь чаще всего оказывается ложным?
Вопрос 15 из 20
Перед публикацией кода по теме «Вариативные параметры» нужно уточнить контракт. Какое замечание о цене решения будет точным?
Вопрос 16 из 20
На ревью разбирают тему «Именованные результаты». Что гарантированно произойдёт в показанной последовательности операций?
GoИменованные результаты: результат выполнения
// Фрагмент для трассировки.
package main
func answer() (n int) {
    defer func(){ n++ }()
    n = 1
    return
}
func main(){ _ = answer() }
Вопрос 17 из 20
В разделе «Именованные результаты» показан конкретный случай. Какой вариант исправления соответствует обычной практике Go?
GoИменованные результаты: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
func answer() (n int) {
    defer func(){ n++ }()
    n = 1
    return
}
func main(){ _ = answer() }
Вопрос 18 из 20
Команда проверяет решение по теме «Именованные результаты». Какой принцип языка объясняет результат полностью?
GoИменованные результаты: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
func answer() (n int) {
    defer func(){ n++ }()
    n = 1
    return
}
func main(){ _ = answer() }
Вопрос 19 из 20
Перед публикацией кода по теме «Именованные результаты» нужно уточнить контракт. Какой предел контракта важен для вызывающего кода?
Вопрос 20 из 20
В рабочем примере по теме «Именованные результаты» важно отделить гарантию от догадки. Как решение скажется на тестировании и дальнейших изменениях?

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу